/******************************************************************************* 
 *  Copyright 2007 Amazon Technologies, Inc.  
 *  Licensed under the Apache License, Version 2.0 (the "License"); 
 *  
 *  You may not use this file except in compliance with the License. 
 *  You may obtain a copy of the License at: http://aws.amazon.com/apache2.0
 *  This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
 *  CONDITIONS OF ANY KIND, either express or implied. See the License for the 
 *  specific language governing permissions and limitations under the License.
 * ***************************************************************************** 
 *    __  _    _  ___ 
 *   (  )( \/\/ )/ __)
 *   /__\ \    / \__ \
 *  (_)(_) \/\/  (___/
 * 
 *  Amazon ECS CSharp Library
 *  API Version: 2007-07-16
 *  Generated: Thu Aug 02 10:15:38 PDT 2007 
 * 
 */

using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using System.Text;


namespace Amazon.ECS.Model
{
    [XmlTypeAttribute(Namespace = "http://webservices.amazon.com/AWSECommerceService/2007-07-16")]
    [XmlRootAttribute(Namespace = "http://webservices.amazon.com/AWSECommerceService/2007-07-16", IsNullable = false)]
    public class MerchantItemAttributes
    {
    
        private List<String> actorField;

        private  Address addressField;
        private  DecimalWithUnits amazonMaximumAgeField;
        private  DecimalWithUnits amazonMinimumAgeField;
        private String apertureModesField;

        private List<String> artistField;

        private String aspectRatioField;

        private String assemblyInstructionsField;

        private String assemblyRequiredField;

        private String audienceRatingField;

        private List<String> audioFormatField;

        private List<String> authorField;

        private String backFindingField;

        private String bandMaterialTypeField;

        private String batteriesIncludedField;

        private String batteriesRequiredField;

        private  NonNegativeIntegerWithUnits batteriesField;
        private String batteryDescriptionField;

        private String batteryTypeField;

        private String bezelMaterialTypeField;

        private String bindingField;

        private String brandField;

        private String calendarTypeField;

        private List<String> cameraManualFeaturesField;

        private  DecimalWithUnits caseDiameterField;
        private String caseMaterialTypeField;

        private  DecimalWithUnits caseThicknessField;
        private String caseTypeField;

        private String catalogNumberField;

        private String CDRWDescriptionField;

        private String chainTypeField;

        private String claspTypeField;

        private String clothingSizeField;

        private String colorField;

        private String compatibilityField;

        private String computerHardwareTypeField;

        private String computerPlatformField;

        private String connectivityField;

        private  DecimalWithUnits continuousShootingSpeedField;
        private String countryField;

        private String countryOfOriginField;

        private String CPUManufacturerField;

        private  DecimalWithUnits CPUSpeedField;
        private String CPUTypeField;

        private  List<Creator> creatorField;

        private String cuisineField;

        private String customizableField;

        private  DecimalWithUnits delayBetweenShotsField;
        private String deliveryOptionField;

        private String departmentField;

        private String descriptionField;

        private String deweyDecimalNumberField;

        private String dialColorField;

        private String dialWindowMaterialTypeField;

        private  DecimalWithUnits digitalZoomField;
        private List<String> directorField;

        private  DecimalWithUnits displaySizeField;
        private Decimal? drumSetPieceQuantityField;

        private Decimal? DVDLayersField;

        private String DVDRWDescriptionField;

        private Decimal? DVDSidesField;

        private String DPCIField;

        private String EANField;

        private String editionField;

        private String ESRBAgeRatingField;

        private String externalDisplaySupportDescriptionField;

        private String fabricTypeField;

        private String faxNumberField;

        private List<String> featureField;

        private  StringWithUnits firstIssueLeadTimeField;
        private String floppyDiskDriveDescriptionField;

        private List<String> formatField;

        private  Price fixedShippingChargeField;
        private String gemTypeField;

        private String graphicsCardInterfaceField;

        private String graphicsDescriptionField;

        private  DecimalWithUnits graphicsMemorySizeField;
        private String guitarAttributeField;

        private String guitarBridgeSystemField;

        private String guitarPickThicknessField;

        private String guitarPickupConfigurationField;

        private Decimal? hardDiskCountField;

        private  NonNegativeIntegerWithUnits hardDiskSizeField;
        private Boolean? hasAutoFocusField;

        private Boolean? hasBurstModeField;

        private Boolean? hasInCameraEditingField;

        private Boolean? hasRedEyeReductionField;

        private Boolean? hasSelfTimerField;

        private Boolean? hasTripodMountField;

        private Boolean? hasVideoOutField;

        private Boolean? hasViewfinderField;

        private String hazardousMaterialTypeField;

        private String hoursOfOperationField;

        private String includedSoftwareField;

        private Boolean? includesMp3PlayerField;

        private String indicationsField;

        private String ingredientsField;

        private String instrumentKeyField;

        private Boolean? isAutographedField;

        private String ISBNField;

        private Boolean? isFragileField;

        private Boolean? isLabCreatedField;

        private Boolean? isMemorabiliaField;

        private  NonNegativeIntegerWithUnits ISOEquivalentField;
        private String issuesPerYearField;

        private  ItemDimensions itemDimensionsField;
        private String keyboardDescriptionField;

        private String labelField;

        private  Languages languagesField;
        private String legalDisclaimerField;

        private String lineVoltageField;

        private  Price listPriceField;
        private String macroFocusRangeField;

        private String magazineTypeField;

        private String malletHardnessField;

        private String manufacturerField;

        private String manufacturerLaborWarrantyDescriptionField;

        private  DecimalWithUnits manufacturerMaximumAgeField;
        private  DecimalWithUnits manufacturerMinimumAgeField;
        private String manufacturerPartsWarrantyDescriptionField;

        private String materialTypeField;

        private  DecimalWithUnits maximumApertureField;
        private String maximumColorDepthField;

        private  DecimalWithUnits maximumFocalLengthField;
        private  NonNegativeIntegerWithUnits maximumHighResolutionImagesField;
        private  NonNegativeIntegerWithUnits maximumHorizontalResolutionField;
        private String maximumLowResolutionImagesField;

        private  DecimalWithUnits maximumResolutionField;
        private  DecimalWithUnits maximumShutterSpeedField;
        private  NonNegativeIntegerWithUnits maximumVerticalResolutionField;
        private  DecimalWithUnits maximumWeightRecommendationField;
        private Decimal? memorySlotsAvailableField;

        private String metalStampField;

        private String metalTypeField;

        private String miniMovieDescriptionField;

        private  DecimalWithUnits minimumFocalLengthField;
        private  DecimalWithUnits minimumShutterSpeedField;
        private String modelField;

        private Decimal? modelYearField;

        private String modemDescriptionField;

        private  DecimalWithUnits monitorSizeField;
        private  DecimalWithUnits monitorViewableDiagonalSizeField;
        private String mouseDescriptionField;

        private String MPNField;

        private String musicalStyleField;

        private String nativeResolutionField;

        private String neighborhoodField;

        private String networkInterfaceDescriptionField;

        private String notebookDisplayTechnologyField;

        private String notebookPointingDeviceDescriptionField;

        private Decimal? numberOfDiscsField;

        private Decimal? numberOfIssuesField;

        private Decimal? numberOfItemsField;

        private Decimal? numberOfKeysField;

        private Decimal? numberOfPagesField;

        private Decimal? numberOfPearlsField;

        private Decimal? numberOfRapidFireShotsField;

        private Decimal? numberOfStonesField;

        private Decimal? numberOfStringsField;

        private Decimal? numberOfTracksField;

        private  DecimalWithUnits opticalZoomField;
        private String originalReleaseDateField;

        private Decimal? outputWattageField;

        private  PackageDimensions packageDimensionsField;
        private String pearlLustreField;

        private String pearlMinimumColorField;

        private String pearlShapeField;

        private String pearlStringingMethodField;

        private String pearlSurfaceBlemishesField;

        private String pearlTypeField;

        private String pearlUniformityField;

        private String phoneNumberField;

        private List<String> photoFlashTypeField;

        private List<String> pictureFormatField;

        private List<String> platformField;

        private Decimal? priceRatingField;

        private Decimal? processorCountField;

        private String productGroupField;

        private String promotionalTagField;

        private String POBoxShippingExcludedField;

        private String publicationDateField;

        private String publisherField;

        private List<String> purchasingChannelField;

        private String readingLevelField;

        private Decimal? recorderTrackCountField;

        private String regionCodeField;

        private String regionOfOriginField;

        private String releaseDateField;

        private List<String> returnMethodField;

        private String removableMemoryField;

        private String resolutionModesField;

        private String returnPolicyField;

        private String ringSizeField;

        private String safetyWarningField;

        private String salesRestrictionField;

        private  NonNegativeIntegerWithUnits secondaryCacheSizeField;
        private String settingTypeField;

        private String sizeField;

        private String SKUField;

        private String soldInStoresField;

        private String sizePerPearlField;

        private String skillLevelField;

        private String soundCardDescriptionField;

        private Decimal? speakerCountField;

        private String speakerDescriptionField;

        private List<String> specialFeaturesField;

        private String stoneClarityField;

        private String stoneColorField;

        private String stoneCutField;

        private String stoneShapeField;

        private  DecimalWithUnits stoneWeightField;
        private String studioField;

        private  NonNegativeIntegerWithUnits subscriptionLengthField;
        private List<String> supportedImageTypeField;

        private  DecimalWithUnits systemBusSpeedField;
        private  DecimalWithUnits systemMemorySizeMaxField;
        private  DecimalWithUnits systemMemorySizeField;
        private String systemMemoryTypeField;

        private String tellingPageIndicatorField;

        private String theatricalReleaseDateField;

        private String titleField;

        private  DecimalWithUnits totalDiamondWeightField;
        private Decimal? totalExternalBaysFreeField;

        private Decimal? totalFirewirePortsField;

        private  DecimalWithUnits totalGemWeightField;
        private Decimal? totalInternalBaysFreeField;

        private  DecimalWithUnits totalMetalWeightField;
        private Decimal? totalNTSCPALPortsField;

        private Decimal? totalParallelPortsField;

        private Decimal? totalPCCardSlotsField;

        private Decimal? totalPCISlotsFreeField;

        private Decimal? totalSerialPortsField;

        private Decimal? totalSVideoOutPortsField;

        private Decimal? totalUSB2PortsField;

        private Decimal? totalUSBPortsField;

        private Decimal? totalVGAOutPortsField;

        private String UPCField;

        private String variationDenominationField;

        private String variationDescriptionField;

        private  VendorRebate vendorRebateField;
        private String warrantyField;

        private String watchMovementTypeField;

        private String websiteBuyabilityField;

        private  DecimalWithUnits waterResistanceDepthField;
        private Decimal? wirelessMicrophoneFrequencyField;


        /// <summary>
        /// Gets and sets the Actor property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Actor")]
        public List<String> Actor
        {
            get
            {
                if (this.actorField == null)
                {
                    this.actorField = new List<String>();
                }
                return this.actorField;
            }
            set { this.actorField =  value; }
        }



        /// <summary>
        /// Sets the Actor property
        /// </summary>
        /// <param name="list">Actor property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithActor(params String[] list)
        {
            foreach (String item in list)
            {
                Actor.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of Actor property is set
        /// </summary>
        /// <returns>true if Actor property is set</returns>
        public Boolean IsSetActor()
        {
            return (Actor.Count > 0);
        }




        /// <summary>
        /// Gets and sets the Address property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Address")]
        public Address Address
        {
            get { return this.addressField ; }
            set { this.addressField = value; }
        }



        /// <summary>
        /// Sets the Address property
        /// </summary>
        /// <param name="address">Address property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithAddress(Address address)
        {
            this.addressField = address;
            return this;
        }



        /// <summary>
        /// Checks if Address property is set
        /// </summary>
        /// <returns>true if Address property is set</returns>
        public Boolean IsSetAddress()
        {
            return this.addressField != null;
        }




        /// <summary>
        /// Gets and sets the AmazonMaximumAge property.
        /// </summary>
        [XmlElementAttribute(ElementName = "AmazonMaximumAge")]
        public DecimalWithUnits AmazonMaximumAge
        {
            get { return this.amazonMaximumAgeField ; }
            set { this.amazonMaximumAgeField = value; }
        }



        /// <summary>
        /// Sets the AmazonMaximumAge property
        /// </summary>
        /// <param name="amazonMaximumAge">AmazonMaximumAge property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithAmazonMaximumAge(DecimalWithUnits amazonMaximumAge)
        {
            this.amazonMaximumAgeField = amazonMaximumAge;
            return this;
        }



        /// <summary>
        /// Checks if AmazonMaximumAge property is set
        /// </summary>
        /// <returns>true if AmazonMaximumAge property is set</returns>
        public Boolean IsSetAmazonMaximumAge()
        {
            return this.amazonMaximumAgeField != null;
        }




        /// <summary>
        /// Gets and sets the AmazonMinimumAge property.
        /// </summary>
        [XmlElementAttribute(ElementName = "AmazonMinimumAge")]
        public DecimalWithUnits AmazonMinimumAge
        {
            get { return this.amazonMinimumAgeField ; }
            set { this.amazonMinimumAgeField = value; }
        }



        /// <summary>
        /// Sets the AmazonMinimumAge property
        /// </summary>
        /// <param name="amazonMinimumAge">AmazonMinimumAge property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithAmazonMinimumAge(DecimalWithUnits amazonMinimumAge)
        {
            this.amazonMinimumAgeField = amazonMinimumAge;
            return this;
        }



        /// <summary>
        /// Checks if AmazonMinimumAge property is set
        /// </summary>
        /// <returns>true if AmazonMinimumAge property is set</returns>
        public Boolean IsSetAmazonMinimumAge()
        {
            return this.amazonMinimumAgeField != null;
        }




        /// <summary>
        /// Gets and sets the ApertureModes property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ApertureModes")]
        public String ApertureModes
        {
            get { return this.apertureModesField ; }
            set { this.apertureModesField= value; }
        }



        /// <summary>
        /// Sets the ApertureModes property
        /// </summary>
        /// <param name="apertureModes">ApertureModes property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithApertureModes(String apertureModes)
        {
            this.apertureModesField = apertureModes;
            return this;
        }



        /// <summary>
        /// Checks if ApertureModes property is set
        /// </summary>
        /// <returns>true if ApertureModes property is set</returns>
        public Boolean IsSetApertureModes()
        {
            return  this.apertureModesField != null;

        }


        /// <summary>
        /// Gets and sets the Artist property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Artist")]
        public List<String> Artist
        {
            get
            {
                if (this.artistField == null)
                {
                    this.artistField = new List<String>();
                }
                return this.artistField;
            }
            set { this.artistField =  value; }
        }



        /// <summary>
        /// Sets the Artist property
        /// </summary>
        /// <param name="list">Artist property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithArtist(params String[] list)
        {
            foreach (String item in list)
            {
                Artist.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of Artist property is set
        /// </summary>
        /// <returns>true if Artist property is set</returns>
        public Boolean IsSetArtist()
        {
            return (Artist.Count > 0);
        }




        /// <summary>
        /// Gets and sets the AspectRatio property.
        /// </summary>
        [XmlElementAttribute(ElementName = "AspectRatio")]
        public String AspectRatio
        {
            get { return this.aspectRatioField ; }
            set { this.aspectRatioField= value; }
        }



        /// <summary>
        /// Sets the AspectRatio property
        /// </summary>
        /// <param name="aspectRatio">AspectRatio property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithAspectRatio(String aspectRatio)
        {
            this.aspectRatioField = aspectRatio;
            return this;
        }



        /// <summary>
        /// Checks if AspectRatio property is set
        /// </summary>
        /// <returns>true if AspectRatio property is set</returns>
        public Boolean IsSetAspectRatio()
        {
            return  this.aspectRatioField != null;

        }


        /// <summary>
        /// Gets and sets the AssemblyInstructions property.
        /// </summary>
        [XmlElementAttribute(ElementName = "AssemblyInstructions")]
        public String AssemblyInstructions
        {
            get { return this.assemblyInstructionsField ; }
            set { this.assemblyInstructionsField= value; }
        }



        /// <summary>
        /// Sets the AssemblyInstructions property
        /// </summary>
        /// <param name="assemblyInstructions">AssemblyInstructions property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithAssemblyInstructions(String assemblyInstructions)
        {
            this.assemblyInstructionsField = assemblyInstructions;
            return this;
        }



        /// <summary>
        /// Checks if AssemblyInstructions property is set
        /// </summary>
        /// <returns>true if AssemblyInstructions property is set</returns>
        public Boolean IsSetAssemblyInstructions()
        {
            return  this.assemblyInstructionsField != null;

        }


        /// <summary>
        /// Gets and sets the AssemblyRequired property.
        /// </summary>
        [XmlElementAttribute(ElementName = "AssemblyRequired")]
        public String AssemblyRequired
        {
            get { return this.assemblyRequiredField ; }
            set { this.assemblyRequiredField= value; }
        }



        /// <summary>
        /// Sets the AssemblyRequired property
        /// </summary>
        /// <param name="assemblyRequired">AssemblyRequired property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithAssemblyRequired(String assemblyRequired)
        {
            this.assemblyRequiredField = assemblyRequired;
            return this;
        }



        /// <summary>
        /// Checks if AssemblyRequired property is set
        /// </summary>
        /// <returns>true if AssemblyRequired property is set</returns>
        public Boolean IsSetAssemblyRequired()
        {
            return  this.assemblyRequiredField != null;

        }


        /// <summary>
        /// Gets and sets the AudienceRating property.
        /// </summary>
        [XmlElementAttribute(ElementName = "AudienceRating")]
        public String AudienceRating
        {
            get { return this.audienceRatingField ; }
            set { this.audienceRatingField= value; }
        }



        /// <summary>
        /// Sets the AudienceRating property
        /// </summary>
        /// <param name="audienceRating">AudienceRating property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithAudienceRating(String audienceRating)
        {
            this.audienceRatingField = audienceRating;
            return this;
        }



        /// <summary>
        /// Checks if AudienceRating property is set
        /// </summary>
        /// <returns>true if AudienceRating property is set</returns>
        public Boolean IsSetAudienceRating()
        {
            return  this.audienceRatingField != null;

        }


        /// <summary>
        /// Gets and sets the AudioFormat property.
        /// </summary>
        [XmlElementAttribute(ElementName = "AudioFormat")]
        public List<String> AudioFormat
        {
            get
            {
                if (this.audioFormatField == null)
                {
                    this.audioFormatField = new List<String>();
                }
                return this.audioFormatField;
            }
            set { this.audioFormatField =  value; }
        }



        /// <summary>
        /// Sets the AudioFormat property
        /// </summary>
        /// <param name="list">AudioFormat property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithAudioFormat(params String[] list)
        {
            foreach (String item in list)
            {
                AudioFormat.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of AudioFormat property is set
        /// </summary>
        /// <returns>true if AudioFormat property is set</returns>
        public Boolean IsSetAudioFormat()
        {
            return (AudioFormat.Count > 0);
        }




        /// <summary>
        /// Gets and sets the Author property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Author")]
        public List<String> Author
        {
            get
            {
                if (this.authorField == null)
                {
                    this.authorField = new List<String>();
                }
                return this.authorField;
            }
            set { this.authorField =  value; }
        }



        /// <summary>
        /// Sets the Author property
        /// </summary>
        /// <param name="list">Author property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithAuthor(params String[] list)
        {
            foreach (String item in list)
            {
                Author.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of Author property is set
        /// </summary>
        /// <returns>true if Author property is set</returns>
        public Boolean IsSetAuthor()
        {
            return (Author.Count > 0);
        }




        /// <summary>
        /// Gets and sets the BackFinding property.
        /// </summary>
        [XmlElementAttribute(ElementName = "BackFinding")]
        public String BackFinding
        {
            get { return this.backFindingField ; }
            set { this.backFindingField= value; }
        }



        /// <summary>
        /// Sets the BackFinding property
        /// </summary>
        /// <param name="backFinding">BackFinding property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBackFinding(String backFinding)
        {
            this.backFindingField = backFinding;
            return this;
        }



        /// <summary>
        /// Checks if BackFinding property is set
        /// </summary>
        /// <returns>true if BackFinding property is set</returns>
        public Boolean IsSetBackFinding()
        {
            return  this.backFindingField != null;

        }


        /// <summary>
        /// Gets and sets the BandMaterialType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "BandMaterialType")]
        public String BandMaterialType
        {
            get { return this.bandMaterialTypeField ; }
            set { this.bandMaterialTypeField= value; }
        }



        /// <summary>
        /// Sets the BandMaterialType property
        /// </summary>
        /// <param name="bandMaterialType">BandMaterialType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBandMaterialType(String bandMaterialType)
        {
            this.bandMaterialTypeField = bandMaterialType;
            return this;
        }



        /// <summary>
        /// Checks if BandMaterialType property is set
        /// </summary>
        /// <returns>true if BandMaterialType property is set</returns>
        public Boolean IsSetBandMaterialType()
        {
            return  this.bandMaterialTypeField != null;

        }


        /// <summary>
        /// Gets and sets the BatteriesIncluded property.
        /// </summary>
        [XmlElementAttribute(ElementName = "BatteriesIncluded")]
        public String BatteriesIncluded
        {
            get { return this.batteriesIncludedField ; }
            set { this.batteriesIncludedField= value; }
        }



        /// <summary>
        /// Sets the BatteriesIncluded property
        /// </summary>
        /// <param name="batteriesIncluded">BatteriesIncluded property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBatteriesIncluded(String batteriesIncluded)
        {
            this.batteriesIncludedField = batteriesIncluded;
            return this;
        }



        /// <summary>
        /// Checks if BatteriesIncluded property is set
        /// </summary>
        /// <returns>true if BatteriesIncluded property is set</returns>
        public Boolean IsSetBatteriesIncluded()
        {
            return  this.batteriesIncludedField != null;

        }


        /// <summary>
        /// Gets and sets the BatteriesRequired property.
        /// </summary>
        [XmlElementAttribute(ElementName = "BatteriesRequired")]
        public String BatteriesRequired
        {
            get { return this.batteriesRequiredField ; }
            set { this.batteriesRequiredField= value; }
        }



        /// <summary>
        /// Sets the BatteriesRequired property
        /// </summary>
        /// <param name="batteriesRequired">BatteriesRequired property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBatteriesRequired(String batteriesRequired)
        {
            this.batteriesRequiredField = batteriesRequired;
            return this;
        }



        /// <summary>
        /// Checks if BatteriesRequired property is set
        /// </summary>
        /// <returns>true if BatteriesRequired property is set</returns>
        public Boolean IsSetBatteriesRequired()
        {
            return  this.batteriesRequiredField != null;

        }


        /// <summary>
        /// Gets and sets the Batteries property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Batteries")]
        public NonNegativeIntegerWithUnits Batteries
        {
            get { return this.batteriesField ; }
            set { this.batteriesField = value; }
        }



        /// <summary>
        /// Sets the Batteries property
        /// </summary>
        /// <param name="batteries">Batteries property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBatteries(NonNegativeIntegerWithUnits batteries)
        {
            this.batteriesField = batteries;
            return this;
        }



        /// <summary>
        /// Checks if Batteries property is set
        /// </summary>
        /// <returns>true if Batteries property is set</returns>
        public Boolean IsSetBatteries()
        {
            return this.batteriesField != null;
        }




        /// <summary>
        /// Gets and sets the BatteryDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "BatteryDescription")]
        public String BatteryDescription
        {
            get { return this.batteryDescriptionField ; }
            set { this.batteryDescriptionField= value; }
        }



        /// <summary>
        /// Sets the BatteryDescription property
        /// </summary>
        /// <param name="batteryDescription">BatteryDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBatteryDescription(String batteryDescription)
        {
            this.batteryDescriptionField = batteryDescription;
            return this;
        }



        /// <summary>
        /// Checks if BatteryDescription property is set
        /// </summary>
        /// <returns>true if BatteryDescription property is set</returns>
        public Boolean IsSetBatteryDescription()
        {
            return  this.batteryDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the BatteryType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "BatteryType")]
        public String BatteryType
        {
            get { return this.batteryTypeField ; }
            set { this.batteryTypeField= value; }
        }



        /// <summary>
        /// Sets the BatteryType property
        /// </summary>
        /// <param name="batteryType">BatteryType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBatteryType(String batteryType)
        {
            this.batteryTypeField = batteryType;
            return this;
        }



        /// <summary>
        /// Checks if BatteryType property is set
        /// </summary>
        /// <returns>true if BatteryType property is set</returns>
        public Boolean IsSetBatteryType()
        {
            return  this.batteryTypeField != null;

        }


        /// <summary>
        /// Gets and sets the BezelMaterialType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "BezelMaterialType")]
        public String BezelMaterialType
        {
            get { return this.bezelMaterialTypeField ; }
            set { this.bezelMaterialTypeField= value; }
        }



        /// <summary>
        /// Sets the BezelMaterialType property
        /// </summary>
        /// <param name="bezelMaterialType">BezelMaterialType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBezelMaterialType(String bezelMaterialType)
        {
            this.bezelMaterialTypeField = bezelMaterialType;
            return this;
        }



        /// <summary>
        /// Checks if BezelMaterialType property is set
        /// </summary>
        /// <returns>true if BezelMaterialType property is set</returns>
        public Boolean IsSetBezelMaterialType()
        {
            return  this.bezelMaterialTypeField != null;

        }


        /// <summary>
        /// Gets and sets the Binding property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Binding")]
        public String Binding
        {
            get { return this.bindingField ; }
            set { this.bindingField= value; }
        }



        /// <summary>
        /// Sets the Binding property
        /// </summary>
        /// <param name="binding">Binding property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBinding(String binding)
        {
            this.bindingField = binding;
            return this;
        }



        /// <summary>
        /// Checks if Binding property is set
        /// </summary>
        /// <returns>true if Binding property is set</returns>
        public Boolean IsSetBinding()
        {
            return  this.bindingField != null;

        }


        /// <summary>
        /// Gets and sets the Brand property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Brand")]
        public String Brand
        {
            get { return this.brandField ; }
            set { this.brandField= value; }
        }



        /// <summary>
        /// Sets the Brand property
        /// </summary>
        /// <param name="brand">Brand property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithBrand(String brand)
        {
            this.brandField = brand;
            return this;
        }



        /// <summary>
        /// Checks if Brand property is set
        /// </summary>
        /// <returns>true if Brand property is set</returns>
        public Boolean IsSetBrand()
        {
            return  this.brandField != null;

        }


        /// <summary>
        /// Gets and sets the CalendarType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CalendarType")]
        public String CalendarType
        {
            get { return this.calendarTypeField ; }
            set { this.calendarTypeField= value; }
        }



        /// <summary>
        /// Sets the CalendarType property
        /// </summary>
        /// <param name="calendarType">CalendarType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCalendarType(String calendarType)
        {
            this.calendarTypeField = calendarType;
            return this;
        }



        /// <summary>
        /// Checks if CalendarType property is set
        /// </summary>
        /// <returns>true if CalendarType property is set</returns>
        public Boolean IsSetCalendarType()
        {
            return  this.calendarTypeField != null;

        }


        /// <summary>
        /// Gets and sets the CameraManualFeatures property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CameraManualFeatures")]
        public List<String> CameraManualFeatures
        {
            get
            {
                if (this.cameraManualFeaturesField == null)
                {
                    this.cameraManualFeaturesField = new List<String>();
                }
                return this.cameraManualFeaturesField;
            }
            set { this.cameraManualFeaturesField =  value; }
        }



        /// <summary>
        /// Sets the CameraManualFeatures property
        /// </summary>
        /// <param name="list">CameraManualFeatures property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCameraManualFeatures(params String[] list)
        {
            foreach (String item in list)
            {
                CameraManualFeatures.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of CameraManualFeatures property is set
        /// </summary>
        /// <returns>true if CameraManualFeatures property is set</returns>
        public Boolean IsSetCameraManualFeatures()
        {
            return (CameraManualFeatures.Count > 0);
        }




        /// <summary>
        /// Gets and sets the CaseDiameter property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CaseDiameter")]
        public DecimalWithUnits CaseDiameter
        {
            get { return this.caseDiameterField ; }
            set { this.caseDiameterField = value; }
        }



        /// <summary>
        /// Sets the CaseDiameter property
        /// </summary>
        /// <param name="caseDiameter">CaseDiameter property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCaseDiameter(DecimalWithUnits caseDiameter)
        {
            this.caseDiameterField = caseDiameter;
            return this;
        }



        /// <summary>
        /// Checks if CaseDiameter property is set
        /// </summary>
        /// <returns>true if CaseDiameter property is set</returns>
        public Boolean IsSetCaseDiameter()
        {
            return this.caseDiameterField != null;
        }




        /// <summary>
        /// Gets and sets the CaseMaterialType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CaseMaterialType")]
        public String CaseMaterialType
        {
            get { return this.caseMaterialTypeField ; }
            set { this.caseMaterialTypeField= value; }
        }



        /// <summary>
        /// Sets the CaseMaterialType property
        /// </summary>
        /// <param name="caseMaterialType">CaseMaterialType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCaseMaterialType(String caseMaterialType)
        {
            this.caseMaterialTypeField = caseMaterialType;
            return this;
        }



        /// <summary>
        /// Checks if CaseMaterialType property is set
        /// </summary>
        /// <returns>true if CaseMaterialType property is set</returns>
        public Boolean IsSetCaseMaterialType()
        {
            return  this.caseMaterialTypeField != null;

        }


        /// <summary>
        /// Gets and sets the CaseThickness property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CaseThickness")]
        public DecimalWithUnits CaseThickness
        {
            get { return this.caseThicknessField ; }
            set { this.caseThicknessField = value; }
        }



        /// <summary>
        /// Sets the CaseThickness property
        /// </summary>
        /// <param name="caseThickness">CaseThickness property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCaseThickness(DecimalWithUnits caseThickness)
        {
            this.caseThicknessField = caseThickness;
            return this;
        }



        /// <summary>
        /// Checks if CaseThickness property is set
        /// </summary>
        /// <returns>true if CaseThickness property is set</returns>
        public Boolean IsSetCaseThickness()
        {
            return this.caseThicknessField != null;
        }




        /// <summary>
        /// Gets and sets the CaseType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CaseType")]
        public String CaseType
        {
            get { return this.caseTypeField ; }
            set { this.caseTypeField= value; }
        }



        /// <summary>
        /// Sets the CaseType property
        /// </summary>
        /// <param name="caseType">CaseType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCaseType(String caseType)
        {
            this.caseTypeField = caseType;
            return this;
        }



        /// <summary>
        /// Checks if CaseType property is set
        /// </summary>
        /// <returns>true if CaseType property is set</returns>
        public Boolean IsSetCaseType()
        {
            return  this.caseTypeField != null;

        }


        /// <summary>
        /// Gets and sets the CatalogNumber property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CatalogNumber")]
        public String CatalogNumber
        {
            get { return this.catalogNumberField ; }
            set { this.catalogNumberField= value; }
        }



        /// <summary>
        /// Sets the CatalogNumber property
        /// </summary>
        /// <param name="catalogNumber">CatalogNumber property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCatalogNumber(String catalogNumber)
        {
            this.catalogNumberField = catalogNumber;
            return this;
        }



        /// <summary>
        /// Checks if CatalogNumber property is set
        /// </summary>
        /// <returns>true if CatalogNumber property is set</returns>
        public Boolean IsSetCatalogNumber()
        {
            return  this.catalogNumberField != null;

        }


        /// <summary>
        /// Gets and sets the CDRWDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CDRWDescription")]
        public String CDRWDescription
        {
            get { return this.CDRWDescriptionField ; }
            set { this.CDRWDescriptionField= value; }
        }



        /// <summary>
        /// Sets the CDRWDescription property
        /// </summary>
        /// <param name="CDRWDescription">CDRWDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCDRWDescription(String CDRWDescription)
        {
            this.CDRWDescriptionField = CDRWDescription;
            return this;
        }



        /// <summary>
        /// Checks if CDRWDescription property is set
        /// </summary>
        /// <returns>true if CDRWDescription property is set</returns>
        public Boolean IsSetCDRWDescription()
        {
            return  this.CDRWDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the ChainType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ChainType")]
        public String ChainType
        {
            get { return this.chainTypeField ; }
            set { this.chainTypeField= value; }
        }



        /// <summary>
        /// Sets the ChainType property
        /// </summary>
        /// <param name="chainType">ChainType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithChainType(String chainType)
        {
            this.chainTypeField = chainType;
            return this;
        }



        /// <summary>
        /// Checks if ChainType property is set
        /// </summary>
        /// <returns>true if ChainType property is set</returns>
        public Boolean IsSetChainType()
        {
            return  this.chainTypeField != null;

        }


        /// <summary>
        /// Gets and sets the ClaspType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ClaspType")]
        public String ClaspType
        {
            get { return this.claspTypeField ; }
            set { this.claspTypeField= value; }
        }



        /// <summary>
        /// Sets the ClaspType property
        /// </summary>
        /// <param name="claspType">ClaspType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithClaspType(String claspType)
        {
            this.claspTypeField = claspType;
            return this;
        }



        /// <summary>
        /// Checks if ClaspType property is set
        /// </summary>
        /// <returns>true if ClaspType property is set</returns>
        public Boolean IsSetClaspType()
        {
            return  this.claspTypeField != null;

        }


        /// <summary>
        /// Gets and sets the ClothingSize property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ClothingSize")]
        public String ClothingSize
        {
            get { return this.clothingSizeField ; }
            set { this.clothingSizeField= value; }
        }



        /// <summary>
        /// Sets the ClothingSize property
        /// </summary>
        /// <param name="clothingSize">ClothingSize property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithClothingSize(String clothingSize)
        {
            this.clothingSizeField = clothingSize;
            return this;
        }



        /// <summary>
        /// Checks if ClothingSize property is set
        /// </summary>
        /// <returns>true if ClothingSize property is set</returns>
        public Boolean IsSetClothingSize()
        {
            return  this.clothingSizeField != null;

        }


        /// <summary>
        /// Gets and sets the Color property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Color")]
        public String Color
        {
            get { return this.colorField ; }
            set { this.colorField= value; }
        }



        /// <summary>
        /// Sets the Color property
        /// </summary>
        /// <param name="color">Color property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithColor(String color)
        {
            this.colorField = color;
            return this;
        }



        /// <summary>
        /// Checks if Color property is set
        /// </summary>
        /// <returns>true if Color property is set</returns>
        public Boolean IsSetColor()
        {
            return  this.colorField != null;

        }


        /// <summary>
        /// Gets and sets the Compatibility property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Compatibility")]
        public String Compatibility
        {
            get { return this.compatibilityField ; }
            set { this.compatibilityField= value; }
        }



        /// <summary>
        /// Sets the Compatibility property
        /// </summary>
        /// <param name="compatibility">Compatibility property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCompatibility(String compatibility)
        {
            this.compatibilityField = compatibility;
            return this;
        }



        /// <summary>
        /// Checks if Compatibility property is set
        /// </summary>
        /// <returns>true if Compatibility property is set</returns>
        public Boolean IsSetCompatibility()
        {
            return  this.compatibilityField != null;

        }


        /// <summary>
        /// Gets and sets the ComputerHardwareType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ComputerHardwareType")]
        public String ComputerHardwareType
        {
            get { return this.computerHardwareTypeField ; }
            set { this.computerHardwareTypeField= value; }
        }



        /// <summary>
        /// Sets the ComputerHardwareType property
        /// </summary>
        /// <param name="computerHardwareType">ComputerHardwareType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithComputerHardwareType(String computerHardwareType)
        {
            this.computerHardwareTypeField = computerHardwareType;
            return this;
        }



        /// <summary>
        /// Checks if ComputerHardwareType property is set
        /// </summary>
        /// <returns>true if ComputerHardwareType property is set</returns>
        public Boolean IsSetComputerHardwareType()
        {
            return  this.computerHardwareTypeField != null;

        }


        /// <summary>
        /// Gets and sets the ComputerPlatform property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ComputerPlatform")]
        public String ComputerPlatform
        {
            get { return this.computerPlatformField ; }
            set { this.computerPlatformField= value; }
        }



        /// <summary>
        /// Sets the ComputerPlatform property
        /// </summary>
        /// <param name="computerPlatform">ComputerPlatform property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithComputerPlatform(String computerPlatform)
        {
            this.computerPlatformField = computerPlatform;
            return this;
        }



        /// <summary>
        /// Checks if ComputerPlatform property is set
        /// </summary>
        /// <returns>true if ComputerPlatform property is set</returns>
        public Boolean IsSetComputerPlatform()
        {
            return  this.computerPlatformField != null;

        }


        /// <summary>
        /// Gets and sets the Connectivity property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Connectivity")]
        public String Connectivity
        {
            get { return this.connectivityField ; }
            set { this.connectivityField= value; }
        }



        /// <summary>
        /// Sets the Connectivity property
        /// </summary>
        /// <param name="connectivity">Connectivity property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithConnectivity(String connectivity)
        {
            this.connectivityField = connectivity;
            return this;
        }



        /// <summary>
        /// Checks if Connectivity property is set
        /// </summary>
        /// <returns>true if Connectivity property is set</returns>
        public Boolean IsSetConnectivity()
        {
            return  this.connectivityField != null;

        }


        /// <summary>
        /// Gets and sets the ContinuousShootingSpeed property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ContinuousShootingSpeed")]
        public DecimalWithUnits ContinuousShootingSpeed
        {
            get { return this.continuousShootingSpeedField ; }
            set { this.continuousShootingSpeedField = value; }
        }



        /// <summary>
        /// Sets the ContinuousShootingSpeed property
        /// </summary>
        /// <param name="continuousShootingSpeed">ContinuousShootingSpeed property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithContinuousShootingSpeed(DecimalWithUnits continuousShootingSpeed)
        {
            this.continuousShootingSpeedField = continuousShootingSpeed;
            return this;
        }



        /// <summary>
        /// Checks if ContinuousShootingSpeed property is set
        /// </summary>
        /// <returns>true if ContinuousShootingSpeed property is set</returns>
        public Boolean IsSetContinuousShootingSpeed()
        {
            return this.continuousShootingSpeedField != null;
        }




        /// <summary>
        /// Gets and sets the Country property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Country")]
        public String Country
        {
            get { return this.countryField ; }
            set { this.countryField= value; }
        }



        /// <summary>
        /// Sets the Country property
        /// </summary>
        /// <param name="country">Country property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCountry(String country)
        {
            this.countryField = country;
            return this;
        }



        /// <summary>
        /// Checks if Country property is set
        /// </summary>
        /// <returns>true if Country property is set</returns>
        public Boolean IsSetCountry()
        {
            return  this.countryField != null;

        }


        /// <summary>
        /// Gets and sets the CountryOfOrigin property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CountryOfOrigin")]
        public String CountryOfOrigin
        {
            get { return this.countryOfOriginField ; }
            set { this.countryOfOriginField= value; }
        }



        /// <summary>
        /// Sets the CountryOfOrigin property
        /// </summary>
        /// <param name="countryOfOrigin">CountryOfOrigin property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCountryOfOrigin(String countryOfOrigin)
        {
            this.countryOfOriginField = countryOfOrigin;
            return this;
        }



        /// <summary>
        /// Checks if CountryOfOrigin property is set
        /// </summary>
        /// <returns>true if CountryOfOrigin property is set</returns>
        public Boolean IsSetCountryOfOrigin()
        {
            return  this.countryOfOriginField != null;

        }


        /// <summary>
        /// Gets and sets the CPUManufacturer property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CPUManufacturer")]
        public String CPUManufacturer
        {
            get { return this.CPUManufacturerField ; }
            set { this.CPUManufacturerField= value; }
        }



        /// <summary>
        /// Sets the CPUManufacturer property
        /// </summary>
        /// <param name="CPUManufacturer">CPUManufacturer property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCPUManufacturer(String CPUManufacturer)
        {
            this.CPUManufacturerField = CPUManufacturer;
            return this;
        }



        /// <summary>
        /// Checks if CPUManufacturer property is set
        /// </summary>
        /// <returns>true if CPUManufacturer property is set</returns>
        public Boolean IsSetCPUManufacturer()
        {
            return  this.CPUManufacturerField != null;

        }


        /// <summary>
        /// Gets and sets the CPUSpeed property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CPUSpeed")]
        public DecimalWithUnits CPUSpeed
        {
            get { return this.CPUSpeedField ; }
            set { this.CPUSpeedField = value; }
        }



        /// <summary>
        /// Sets the CPUSpeed property
        /// </summary>
        /// <param name="CPUSpeed">CPUSpeed property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCPUSpeed(DecimalWithUnits CPUSpeed)
        {
            this.CPUSpeedField = CPUSpeed;
            return this;
        }



        /// <summary>
        /// Checks if CPUSpeed property is set
        /// </summary>
        /// <returns>true if CPUSpeed property is set</returns>
        public Boolean IsSetCPUSpeed()
        {
            return this.CPUSpeedField != null;
        }




        /// <summary>
        /// Gets and sets the CPUType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "CPUType")]
        public String CPUType
        {
            get { return this.CPUTypeField ; }
            set { this.CPUTypeField= value; }
        }



        /// <summary>
        /// Sets the CPUType property
        /// </summary>
        /// <param name="CPUType">CPUType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCPUType(String CPUType)
        {
            this.CPUTypeField = CPUType;
            return this;
        }



        /// <summary>
        /// Checks if CPUType property is set
        /// </summary>
        /// <returns>true if CPUType property is set</returns>
        public Boolean IsSetCPUType()
        {
            return  this.CPUTypeField != null;

        }


        /// <summary>
        /// Gets and sets the Creator property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Creator")]
        public List<Creator> Creator
        {
            get
            {
                if (this.creatorField == null)
                {
                    this.creatorField = new List<Creator>();
                }
                return this.creatorField;
            }
            set { this.creatorField =  value; }
        }



        /// <summary>
        /// Sets the Creator property
        /// </summary>
        /// <param name="list">Creator property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCreator(params Creator[] list)
        {
            foreach (Creator item in list)
            {
                Creator.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks if Creator property is set
        /// </summary>
        /// <returns>true if Creator property is set</returns>
        public Boolean IsSetCreator()
        {
            return (Creator.Count > 0);
        }


        /// <summary>
        /// Gets and sets the Cuisine property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Cuisine")]
        public String Cuisine
        {
            get { return this.cuisineField ; }
            set { this.cuisineField= value; }
        }



        /// <summary>
        /// Sets the Cuisine property
        /// </summary>
        /// <param name="cuisine">Cuisine property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCuisine(String cuisine)
        {
            this.cuisineField = cuisine;
            return this;
        }



        /// <summary>
        /// Checks if Cuisine property is set
        /// </summary>
        /// <returns>true if Cuisine property is set</returns>
        public Boolean IsSetCuisine()
        {
            return  this.cuisineField != null;

        }


        /// <summary>
        /// Gets and sets the Customizable property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Customizable")]
        public String Customizable
        {
            get { return this.customizableField ; }
            set { this.customizableField= value; }
        }



        /// <summary>
        /// Sets the Customizable property
        /// </summary>
        /// <param name="customizable">Customizable property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithCustomizable(String customizable)
        {
            this.customizableField = customizable;
            return this;
        }



        /// <summary>
        /// Checks if Customizable property is set
        /// </summary>
        /// <returns>true if Customizable property is set</returns>
        public Boolean IsSetCustomizable()
        {
            return  this.customizableField != null;

        }


        /// <summary>
        /// Gets and sets the DelayBetweenShots property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DelayBetweenShots")]
        public DecimalWithUnits DelayBetweenShots
        {
            get { return this.delayBetweenShotsField ; }
            set { this.delayBetweenShotsField = value; }
        }



        /// <summary>
        /// Sets the DelayBetweenShots property
        /// </summary>
        /// <param name="delayBetweenShots">DelayBetweenShots property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDelayBetweenShots(DecimalWithUnits delayBetweenShots)
        {
            this.delayBetweenShotsField = delayBetweenShots;
            return this;
        }



        /// <summary>
        /// Checks if DelayBetweenShots property is set
        /// </summary>
        /// <returns>true if DelayBetweenShots property is set</returns>
        public Boolean IsSetDelayBetweenShots()
        {
            return this.delayBetweenShotsField != null;
        }




        /// <summary>
        /// Gets and sets the DeliveryOption property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DeliveryOption")]
        public String DeliveryOption
        {
            get { return this.deliveryOptionField ; }
            set { this.deliveryOptionField= value; }
        }



        /// <summary>
        /// Sets the DeliveryOption property
        /// </summary>
        /// <param name="deliveryOption">DeliveryOption property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDeliveryOption(String deliveryOption)
        {
            this.deliveryOptionField = deliveryOption;
            return this;
        }



        /// <summary>
        /// Checks if DeliveryOption property is set
        /// </summary>
        /// <returns>true if DeliveryOption property is set</returns>
        public Boolean IsSetDeliveryOption()
        {
            return  this.deliveryOptionField != null;

        }


        /// <summary>
        /// Gets and sets the Department property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Department")]
        public String Department
        {
            get { return this.departmentField ; }
            set { this.departmentField= value; }
        }



        /// <summary>
        /// Sets the Department property
        /// </summary>
        /// <param name="department">Department property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDepartment(String department)
        {
            this.departmentField = department;
            return this;
        }



        /// <summary>
        /// Checks if Department property is set
        /// </summary>
        /// <returns>true if Department property is set</returns>
        public Boolean IsSetDepartment()
        {
            return  this.departmentField != null;

        }


        /// <summary>
        /// Gets and sets the Description property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Description")]
        public String Description
        {
            get { return this.descriptionField ; }
            set { this.descriptionField= value; }
        }



        /// <summary>
        /// Sets the Description property
        /// </summary>
        /// <param name="description">Description property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDescription(String description)
        {
            this.descriptionField = description;
            return this;
        }



        /// <summary>
        /// Checks if Description property is set
        /// </summary>
        /// <returns>true if Description property is set</returns>
        public Boolean IsSetDescription()
        {
            return  this.descriptionField != null;

        }


        /// <summary>
        /// Gets and sets the DeweyDecimalNumber property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DeweyDecimalNumber")]
        public String DeweyDecimalNumber
        {
            get { return this.deweyDecimalNumberField ; }
            set { this.deweyDecimalNumberField= value; }
        }



        /// <summary>
        /// Sets the DeweyDecimalNumber property
        /// </summary>
        /// <param name="deweyDecimalNumber">DeweyDecimalNumber property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDeweyDecimalNumber(String deweyDecimalNumber)
        {
            this.deweyDecimalNumberField = deweyDecimalNumber;
            return this;
        }



        /// <summary>
        /// Checks if DeweyDecimalNumber property is set
        /// </summary>
        /// <returns>true if DeweyDecimalNumber property is set</returns>
        public Boolean IsSetDeweyDecimalNumber()
        {
            return  this.deweyDecimalNumberField != null;

        }


        /// <summary>
        /// Gets and sets the DialColor property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DialColor")]
        public String DialColor
        {
            get { return this.dialColorField ; }
            set { this.dialColorField= value; }
        }



        /// <summary>
        /// Sets the DialColor property
        /// </summary>
        /// <param name="dialColor">DialColor property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDialColor(String dialColor)
        {
            this.dialColorField = dialColor;
            return this;
        }



        /// <summary>
        /// Checks if DialColor property is set
        /// </summary>
        /// <returns>true if DialColor property is set</returns>
        public Boolean IsSetDialColor()
        {
            return  this.dialColorField != null;

        }


        /// <summary>
        /// Gets and sets the DialWindowMaterialType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DialWindowMaterialType")]
        public String DialWindowMaterialType
        {
            get { return this.dialWindowMaterialTypeField ; }
            set { this.dialWindowMaterialTypeField= value; }
        }



        /// <summary>
        /// Sets the DialWindowMaterialType property
        /// </summary>
        /// <param name="dialWindowMaterialType">DialWindowMaterialType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDialWindowMaterialType(String dialWindowMaterialType)
        {
            this.dialWindowMaterialTypeField = dialWindowMaterialType;
            return this;
        }



        /// <summary>
        /// Checks if DialWindowMaterialType property is set
        /// </summary>
        /// <returns>true if DialWindowMaterialType property is set</returns>
        public Boolean IsSetDialWindowMaterialType()
        {
            return  this.dialWindowMaterialTypeField != null;

        }


        /// <summary>
        /// Gets and sets the DigitalZoom property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DigitalZoom")]
        public DecimalWithUnits DigitalZoom
        {
            get { return this.digitalZoomField ; }
            set { this.digitalZoomField = value; }
        }



        /// <summary>
        /// Sets the DigitalZoom property
        /// </summary>
        /// <param name="digitalZoom">DigitalZoom property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDigitalZoom(DecimalWithUnits digitalZoom)
        {
            this.digitalZoomField = digitalZoom;
            return this;
        }



        /// <summary>
        /// Checks if DigitalZoom property is set
        /// </summary>
        /// <returns>true if DigitalZoom property is set</returns>
        public Boolean IsSetDigitalZoom()
        {
            return this.digitalZoomField != null;
        }




        /// <summary>
        /// Gets and sets the Director property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Director")]
        public List<String> Director
        {
            get
            {
                if (this.directorField == null)
                {
                    this.directorField = new List<String>();
                }
                return this.directorField;
            }
            set { this.directorField =  value; }
        }



        /// <summary>
        /// Sets the Director property
        /// </summary>
        /// <param name="list">Director property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDirector(params String[] list)
        {
            foreach (String item in list)
            {
                Director.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of Director property is set
        /// </summary>
        /// <returns>true if Director property is set</returns>
        public Boolean IsSetDirector()
        {
            return (Director.Count > 0);
        }




        /// <summary>
        /// Gets and sets the DisplaySize property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DisplaySize")]
        public DecimalWithUnits DisplaySize
        {
            get { return this.displaySizeField ; }
            set { this.displaySizeField = value; }
        }



        /// <summary>
        /// Sets the DisplaySize property
        /// </summary>
        /// <param name="displaySize">DisplaySize property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDisplaySize(DecimalWithUnits displaySize)
        {
            this.displaySizeField = displaySize;
            return this;
        }



        /// <summary>
        /// Checks if DisplaySize property is set
        /// </summary>
        /// <returns>true if DisplaySize property is set</returns>
        public Boolean IsSetDisplaySize()
        {
            return this.displaySizeField != null;
        }




        /// <summary>
        /// Gets and sets the DrumSetPieceQuantity property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DrumSetPieceQuantity")]
        public Decimal DrumSetPieceQuantity
        {
            get { return this.drumSetPieceQuantityField.GetValueOrDefault() ; }
            set { this.drumSetPieceQuantityField= value; }
        }



        /// <summary>
        /// Sets the DrumSetPieceQuantity property
        /// </summary>
        /// <param name="drumSetPieceQuantity">DrumSetPieceQuantity property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDrumSetPieceQuantity(Decimal drumSetPieceQuantity)
        {
            this.drumSetPieceQuantityField = drumSetPieceQuantity;
            return this;
        }



        /// <summary>
        /// Checks if DrumSetPieceQuantity property is set
        /// </summary>
        /// <returns>true if DrumSetPieceQuantity property is set</returns>
        public Boolean IsSetDrumSetPieceQuantity()
        {
            return  this.drumSetPieceQuantityField != null;

        }


        /// <summary>
        /// Gets and sets the DVDLayers property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DVDLayers")]
        public Decimal DVDLayers
        {
            get { return this.DVDLayersField.GetValueOrDefault() ; }
            set { this.DVDLayersField= value; }
        }



        /// <summary>
        /// Sets the DVDLayers property
        /// </summary>
        /// <param name="DVDLayers">DVDLayers property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDVDLayers(Decimal DVDLayers)
        {
            this.DVDLayersField = DVDLayers;
            return this;
        }



        /// <summary>
        /// Checks if DVDLayers property is set
        /// </summary>
        /// <returns>true if DVDLayers property is set</returns>
        public Boolean IsSetDVDLayers()
        {
            return  this.DVDLayersField != null;

        }


        /// <summary>
        /// Gets and sets the DVDRWDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DVDRWDescription")]
        public String DVDRWDescription
        {
            get { return this.DVDRWDescriptionField ; }
            set { this.DVDRWDescriptionField= value; }
        }



        /// <summary>
        /// Sets the DVDRWDescription property
        /// </summary>
        /// <param name="DVDRWDescription">DVDRWDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDVDRWDescription(String DVDRWDescription)
        {
            this.DVDRWDescriptionField = DVDRWDescription;
            return this;
        }



        /// <summary>
        /// Checks if DVDRWDescription property is set
        /// </summary>
        /// <returns>true if DVDRWDescription property is set</returns>
        public Boolean IsSetDVDRWDescription()
        {
            return  this.DVDRWDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the DVDSides property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DVDSides")]
        public Decimal DVDSides
        {
            get { return this.DVDSidesField.GetValueOrDefault() ; }
            set { this.DVDSidesField= value; }
        }



        /// <summary>
        /// Sets the DVDSides property
        /// </summary>
        /// <param name="DVDSides">DVDSides property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDVDSides(Decimal DVDSides)
        {
            this.DVDSidesField = DVDSides;
            return this;
        }



        /// <summary>
        /// Checks if DVDSides property is set
        /// </summary>
        /// <returns>true if DVDSides property is set</returns>
        public Boolean IsSetDVDSides()
        {
            return  this.DVDSidesField != null;

        }


        /// <summary>
        /// Gets and sets the DPCI property.
        /// </summary>
        [XmlElementAttribute(ElementName = "DPCI")]
        public String DPCI
        {
            get { return this.DPCIField ; }
            set { this.DPCIField= value; }
        }



        /// <summary>
        /// Sets the DPCI property
        /// </summary>
        /// <param name="DPCI">DPCI property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithDPCI(String DPCI)
        {
            this.DPCIField = DPCI;
            return this;
        }



        /// <summary>
        /// Checks if DPCI property is set
        /// </summary>
        /// <returns>true if DPCI property is set</returns>
        public Boolean IsSetDPCI()
        {
            return  this.DPCIField != null;

        }


        /// <summary>
        /// Gets and sets the EAN property.
        /// </summary>
        [XmlElementAttribute(ElementName = "EAN")]
        public String EAN
        {
            get { return this.EANField ; }
            set { this.EANField= value; }
        }



        /// <summary>
        /// Sets the EAN property
        /// </summary>
        /// <param name="EAN">EAN property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithEAN(String EAN)
        {
            this.EANField = EAN;
            return this;
        }



        /// <summary>
        /// Checks if EAN property is set
        /// </summary>
        /// <returns>true if EAN property is set</returns>
        public Boolean IsSetEAN()
        {
            return  this.EANField != null;

        }


        /// <summary>
        /// Gets and sets the Edition property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Edition")]
        public String Edition
        {
            get { return this.editionField ; }
            set { this.editionField= value; }
        }



        /// <summary>
        /// Sets the Edition property
        /// </summary>
        /// <param name="edition">Edition property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithEdition(String edition)
        {
            this.editionField = edition;
            return this;
        }



        /// <summary>
        /// Checks if Edition property is set
        /// </summary>
        /// <returns>true if Edition property is set</returns>
        public Boolean IsSetEdition()
        {
            return  this.editionField != null;

        }


        /// <summary>
        /// Gets and sets the ESRBAgeRating property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ESRBAgeRating")]
        public String ESRBAgeRating
        {
            get { return this.ESRBAgeRatingField ; }
            set { this.ESRBAgeRatingField= value; }
        }



        /// <summary>
        /// Sets the ESRBAgeRating property
        /// </summary>
        /// <param name="ESRBAgeRating">ESRBAgeRating property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithESRBAgeRating(String ESRBAgeRating)
        {
            this.ESRBAgeRatingField = ESRBAgeRating;
            return this;
        }



        /// <summary>
        /// Checks if ESRBAgeRating property is set
        /// </summary>
        /// <returns>true if ESRBAgeRating property is set</returns>
        public Boolean IsSetESRBAgeRating()
        {
            return  this.ESRBAgeRatingField != null;

        }


        /// <summary>
        /// Gets and sets the ExternalDisplaySupportDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ExternalDisplaySupportDescription")]
        public String ExternalDisplaySupportDescription
        {
            get { return this.externalDisplaySupportDescriptionField ; }
            set { this.externalDisplaySupportDescriptionField= value; }
        }



        /// <summary>
        /// Sets the ExternalDisplaySupportDescription property
        /// </summary>
        /// <param name="externalDisplaySupportDescription">ExternalDisplaySupportDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithExternalDisplaySupportDescription(String externalDisplaySupportDescription)
        {
            this.externalDisplaySupportDescriptionField = externalDisplaySupportDescription;
            return this;
        }



        /// <summary>
        /// Checks if ExternalDisplaySupportDescription property is set
        /// </summary>
        /// <returns>true if ExternalDisplaySupportDescription property is set</returns>
        public Boolean IsSetExternalDisplaySupportDescription()
        {
            return  this.externalDisplaySupportDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the FabricType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "FabricType")]
        public String FabricType
        {
            get { return this.fabricTypeField ; }
            set { this.fabricTypeField= value; }
        }



        /// <summary>
        /// Sets the FabricType property
        /// </summary>
        /// <param name="fabricType">FabricType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithFabricType(String fabricType)
        {
            this.fabricTypeField = fabricType;
            return this;
        }



        /// <summary>
        /// Checks if FabricType property is set
        /// </summary>
        /// <returns>true if FabricType property is set</returns>
        public Boolean IsSetFabricType()
        {
            return  this.fabricTypeField != null;

        }


        /// <summary>
        /// Gets and sets the FaxNumber property.
        /// </summary>
        [XmlElementAttribute(ElementName = "FaxNumber")]
        public String FaxNumber
        {
            get { return this.faxNumberField ; }
            set { this.faxNumberField= value; }
        }



        /// <summary>
        /// Sets the FaxNumber property
        /// </summary>
        /// <param name="faxNumber">FaxNumber property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithFaxNumber(String faxNumber)
        {
            this.faxNumberField = faxNumber;
            return this;
        }



        /// <summary>
        /// Checks if FaxNumber property is set
        /// </summary>
        /// <returns>true if FaxNumber property is set</returns>
        public Boolean IsSetFaxNumber()
        {
            return  this.faxNumberField != null;

        }


        /// <summary>
        /// Gets and sets the Feature property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Feature")]
        public List<String> Feature
        {
            get
            {
                if (this.featureField == null)
                {
                    this.featureField = new List<String>();
                }
                return this.featureField;
            }
            set { this.featureField =  value; }
        }



        /// <summary>
        /// Sets the Feature property
        /// </summary>
        /// <param name="list">Feature property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithFeature(params String[] list)
        {
            foreach (String item in list)
            {
                Feature.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of Feature property is set
        /// </summary>
        /// <returns>true if Feature property is set</returns>
        public Boolean IsSetFeature()
        {
            return (Feature.Count > 0);
        }




        /// <summary>
        /// Gets and sets the FirstIssueLeadTime property.
        /// </summary>
        [XmlElementAttribute(ElementName = "FirstIssueLeadTime")]
        public StringWithUnits FirstIssueLeadTime
        {
            get { return this.firstIssueLeadTimeField ; }
            set { this.firstIssueLeadTimeField = value; }
        }



        /// <summary>
        /// Sets the FirstIssueLeadTime property
        /// </summary>
        /// <param name="firstIssueLeadTime">FirstIssueLeadTime property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithFirstIssueLeadTime(StringWithUnits firstIssueLeadTime)
        {
            this.firstIssueLeadTimeField = firstIssueLeadTime;
            return this;
        }



        /// <summary>
        /// Checks if FirstIssueLeadTime property is set
        /// </summary>
        /// <returns>true if FirstIssueLeadTime property is set</returns>
        public Boolean IsSetFirstIssueLeadTime()
        {
            return this.firstIssueLeadTimeField != null;
        }




        /// <summary>
        /// Gets and sets the FloppyDiskDriveDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "FloppyDiskDriveDescription")]
        public String FloppyDiskDriveDescription
        {
            get { return this.floppyDiskDriveDescriptionField ; }
            set { this.floppyDiskDriveDescriptionField= value; }
        }



        /// <summary>
        /// Sets the FloppyDiskDriveDescription property
        /// </summary>
        /// <param name="floppyDiskDriveDescription">FloppyDiskDriveDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithFloppyDiskDriveDescription(String floppyDiskDriveDescription)
        {
            this.floppyDiskDriveDescriptionField = floppyDiskDriveDescription;
            return this;
        }



        /// <summary>
        /// Checks if FloppyDiskDriveDescription property is set
        /// </summary>
        /// <returns>true if FloppyDiskDriveDescription property is set</returns>
        public Boolean IsSetFloppyDiskDriveDescription()
        {
            return  this.floppyDiskDriveDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the Format property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Format")]
        public List<String> Format
        {
            get
            {
                if (this.formatField == null)
                {
                    this.formatField = new List<String>();
                }
                return this.formatField;
            }
            set { this.formatField =  value; }
        }



        /// <summary>
        /// Sets the Format property
        /// </summary>
        /// <param name="list">Format property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithFormat(params String[] list)
        {
            foreach (String item in list)
            {
                Format.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of Format property is set
        /// </summary>
        /// <returns>true if Format property is set</returns>
        public Boolean IsSetFormat()
        {
            return (Format.Count > 0);
        }




        /// <summary>
        /// Gets and sets the FixedShippingCharge property.
        /// </summary>
        [XmlElementAttribute(ElementName = "FixedShippingCharge")]
        public Price FixedShippingCharge
        {
            get { return this.fixedShippingChargeField ; }
            set { this.fixedShippingChargeField = value; }
        }



        /// <summary>
        /// Sets the FixedShippingCharge property
        /// </summary>
        /// <param name="fixedShippingCharge">FixedShippingCharge property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithFixedShippingCharge(Price fixedShippingCharge)
        {
            this.fixedShippingChargeField = fixedShippingCharge;
            return this;
        }



        /// <summary>
        /// Checks if FixedShippingCharge property is set
        /// </summary>
        /// <returns>true if FixedShippingCharge property is set</returns>
        public Boolean IsSetFixedShippingCharge()
        {
            return this.fixedShippingChargeField != null;
        }




        /// <summary>
        /// Gets and sets the GemType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "GemType")]
        public String GemType
        {
            get { return this.gemTypeField ; }
            set { this.gemTypeField= value; }
        }



        /// <summary>
        /// Sets the GemType property
        /// </summary>
        /// <param name="gemType">GemType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithGemType(String gemType)
        {
            this.gemTypeField = gemType;
            return this;
        }



        /// <summary>
        /// Checks if GemType property is set
        /// </summary>
        /// <returns>true if GemType property is set</returns>
        public Boolean IsSetGemType()
        {
            return  this.gemTypeField != null;

        }


        /// <summary>
        /// Gets and sets the GraphicsCardInterface property.
        /// </summary>
        [XmlElementAttribute(ElementName = "GraphicsCardInterface")]
        public String GraphicsCardInterface
        {
            get { return this.graphicsCardInterfaceField ; }
            set { this.graphicsCardInterfaceField= value; }
        }



        /// <summary>
        /// Sets the GraphicsCardInterface property
        /// </summary>
        /// <param name="graphicsCardInterface">GraphicsCardInterface property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithGraphicsCardInterface(String graphicsCardInterface)
        {
            this.graphicsCardInterfaceField = graphicsCardInterface;
            return this;
        }



        /// <summary>
        /// Checks if GraphicsCardInterface property is set
        /// </summary>
        /// <returns>true if GraphicsCardInterface property is set</returns>
        public Boolean IsSetGraphicsCardInterface()
        {
            return  this.graphicsCardInterfaceField != null;

        }


        /// <summary>
        /// Gets and sets the GraphicsDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "GraphicsDescription")]
        public String GraphicsDescription
        {
            get { return this.graphicsDescriptionField ; }
            set { this.graphicsDescriptionField= value; }
        }



        /// <summary>
        /// Sets the GraphicsDescription property
        /// </summary>
        /// <param name="graphicsDescription">GraphicsDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithGraphicsDescription(String graphicsDescription)
        {
            this.graphicsDescriptionField = graphicsDescription;
            return this;
        }



        /// <summary>
        /// Checks if GraphicsDescription property is set
        /// </summary>
        /// <returns>true if GraphicsDescription property is set</returns>
        public Boolean IsSetGraphicsDescription()
        {
            return  this.graphicsDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the GraphicsMemorySize property.
        /// </summary>
        [XmlElementAttribute(ElementName = "GraphicsMemorySize")]
        public DecimalWithUnits GraphicsMemorySize
        {
            get { return this.graphicsMemorySizeField ; }
            set { this.graphicsMemorySizeField = value; }
        }



        /// <summary>
        /// Sets the GraphicsMemorySize property
        /// </summary>
        /// <param name="graphicsMemorySize">GraphicsMemorySize property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithGraphicsMemorySize(DecimalWithUnits graphicsMemorySize)
        {
            this.graphicsMemorySizeField = graphicsMemorySize;
            return this;
        }



        /// <summary>
        /// Checks if GraphicsMemorySize property is set
        /// </summary>
        /// <returns>true if GraphicsMemorySize property is set</returns>
        public Boolean IsSetGraphicsMemorySize()
        {
            return this.graphicsMemorySizeField != null;
        }




        /// <summary>
        /// Gets and sets the GuitarAttribute property.
        /// </summary>
        [XmlElementAttribute(ElementName = "GuitarAttribute")]
        public String GuitarAttribute
        {
            get { return this.guitarAttributeField ; }
            set { this.guitarAttributeField= value; }
        }



        /// <summary>
        /// Sets the GuitarAttribute property
        /// </summary>
        /// <param name="guitarAttribute">GuitarAttribute property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithGuitarAttribute(String guitarAttribute)
        {
            this.guitarAttributeField = guitarAttribute;
            return this;
        }



        /// <summary>
        /// Checks if GuitarAttribute property is set
        /// </summary>
        /// <returns>true if GuitarAttribute property is set</returns>
        public Boolean IsSetGuitarAttribute()
        {
            return  this.guitarAttributeField != null;

        }


        /// <summary>
        /// Gets and sets the GuitarBridgeSystem property.
        /// </summary>
        [XmlElementAttribute(ElementName = "GuitarBridgeSystem")]
        public String GuitarBridgeSystem
        {
            get { return this.guitarBridgeSystemField ; }
            set { this.guitarBridgeSystemField= value; }
        }



        /// <summary>
        /// Sets the GuitarBridgeSystem property
        /// </summary>
        /// <param name="guitarBridgeSystem">GuitarBridgeSystem property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithGuitarBridgeSystem(String guitarBridgeSystem)
        {
            this.guitarBridgeSystemField = guitarBridgeSystem;
            return this;
        }



        /// <summary>
        /// Checks if GuitarBridgeSystem property is set
        /// </summary>
        /// <returns>true if GuitarBridgeSystem property is set</returns>
        public Boolean IsSetGuitarBridgeSystem()
        {
            return  this.guitarBridgeSystemField != null;

        }


        /// <summary>
        /// Gets and sets the GuitarPickThickness property.
        /// </summary>
        [XmlElementAttribute(ElementName = "GuitarPickThickness")]
        public String GuitarPickThickness
        {
            get { return this.guitarPickThicknessField ; }
            set { this.guitarPickThicknessField= value; }
        }



        /// <summary>
        /// Sets the GuitarPickThickness property
        /// </summary>
        /// <param name="guitarPickThickness">GuitarPickThickness property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithGuitarPickThickness(String guitarPickThickness)
        {
            this.guitarPickThicknessField = guitarPickThickness;
            return this;
        }



        /// <summary>
        /// Checks if GuitarPickThickness property is set
        /// </summary>
        /// <returns>true if GuitarPickThickness property is set</returns>
        public Boolean IsSetGuitarPickThickness()
        {
            return  this.guitarPickThicknessField != null;

        }


        /// <summary>
        /// Gets and sets the GuitarPickupConfiguration property.
        /// </summary>
        [XmlElementAttribute(ElementName = "GuitarPickupConfiguration")]
        public String GuitarPickupConfiguration
        {
            get { return this.guitarPickupConfigurationField ; }
            set { this.guitarPickupConfigurationField= value; }
        }



        /// <summary>
        /// Sets the GuitarPickupConfiguration property
        /// </summary>
        /// <param name="guitarPickupConfiguration">GuitarPickupConfiguration property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithGuitarPickupConfiguration(String guitarPickupConfiguration)
        {
            this.guitarPickupConfigurationField = guitarPickupConfiguration;
            return this;
        }



        /// <summary>
        /// Checks if GuitarPickupConfiguration property is set
        /// </summary>
        /// <returns>true if GuitarPickupConfiguration property is set</returns>
        public Boolean IsSetGuitarPickupConfiguration()
        {
            return  this.guitarPickupConfigurationField != null;

        }


        /// <summary>
        /// Gets and sets the HardDiskCount property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HardDiskCount")]
        public Decimal HardDiskCount
        {
            get { return this.hardDiskCountField.GetValueOrDefault() ; }
            set { this.hardDiskCountField= value; }
        }



        /// <summary>
        /// Sets the HardDiskCount property
        /// </summary>
        /// <param name="hardDiskCount">HardDiskCount property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHardDiskCount(Decimal hardDiskCount)
        {
            this.hardDiskCountField = hardDiskCount;
            return this;
        }



        /// <summary>
        /// Checks if HardDiskCount property is set
        /// </summary>
        /// <returns>true if HardDiskCount property is set</returns>
        public Boolean IsSetHardDiskCount()
        {
            return  this.hardDiskCountField != null;

        }


        /// <summary>
        /// Gets and sets the HardDiskSize property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HardDiskSize")]
        public NonNegativeIntegerWithUnits HardDiskSize
        {
            get { return this.hardDiskSizeField ; }
            set { this.hardDiskSizeField = value; }
        }



        /// <summary>
        /// Sets the HardDiskSize property
        /// </summary>
        /// <param name="hardDiskSize">HardDiskSize property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHardDiskSize(NonNegativeIntegerWithUnits hardDiskSize)
        {
            this.hardDiskSizeField = hardDiskSize;
            return this;
        }



        /// <summary>
        /// Checks if HardDiskSize property is set
        /// </summary>
        /// <returns>true if HardDiskSize property is set</returns>
        public Boolean IsSetHardDiskSize()
        {
            return this.hardDiskSizeField != null;
        }




        /// <summary>
        /// Gets and sets the HasAutoFocus property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HasAutoFocus")]
        public Boolean HasAutoFocus
        {
            get { return this.hasAutoFocusField.GetValueOrDefault() ; }
            set { this.hasAutoFocusField= value; }
        }



        /// <summary>
        /// Sets the HasAutoFocus property
        /// </summary>
        /// <param name="hasAutoFocus">HasAutoFocus property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHasAutoFocus(Boolean hasAutoFocus)
        {
            this.hasAutoFocusField = hasAutoFocus;
            return this;
        }



        /// <summary>
        /// Checks if HasAutoFocus property is set
        /// </summary>
        /// <returns>true if HasAutoFocus property is set</returns>
        public Boolean IsSetHasAutoFocus()
        {
            return  this.hasAutoFocusField != null;

        }


        /// <summary>
        /// Gets and sets the HasBurstMode property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HasBurstMode")]
        public Boolean HasBurstMode
        {
            get { return this.hasBurstModeField.GetValueOrDefault() ; }
            set { this.hasBurstModeField= value; }
        }



        /// <summary>
        /// Sets the HasBurstMode property
        /// </summary>
        /// <param name="hasBurstMode">HasBurstMode property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHasBurstMode(Boolean hasBurstMode)
        {
            this.hasBurstModeField = hasBurstMode;
            return this;
        }



        /// <summary>
        /// Checks if HasBurstMode property is set
        /// </summary>
        /// <returns>true if HasBurstMode property is set</returns>
        public Boolean IsSetHasBurstMode()
        {
            return  this.hasBurstModeField != null;

        }


        /// <summary>
        /// Gets and sets the HasInCameraEditing property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HasInCameraEditing")]
        public Boolean HasInCameraEditing
        {
            get { return this.hasInCameraEditingField.GetValueOrDefault() ; }
            set { this.hasInCameraEditingField= value; }
        }



        /// <summary>
        /// Sets the HasInCameraEditing property
        /// </summary>
        /// <param name="hasInCameraEditing">HasInCameraEditing property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHasInCameraEditing(Boolean hasInCameraEditing)
        {
            this.hasInCameraEditingField = hasInCameraEditing;
            return this;
        }



        /// <summary>
        /// Checks if HasInCameraEditing property is set
        /// </summary>
        /// <returns>true if HasInCameraEditing property is set</returns>
        public Boolean IsSetHasInCameraEditing()
        {
            return  this.hasInCameraEditingField != null;

        }


        /// <summary>
        /// Gets and sets the HasRedEyeReduction property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HasRedEyeReduction")]
        public Boolean HasRedEyeReduction
        {
            get { return this.hasRedEyeReductionField.GetValueOrDefault() ; }
            set { this.hasRedEyeReductionField= value; }
        }



        /// <summary>
        /// Sets the HasRedEyeReduction property
        /// </summary>
        /// <param name="hasRedEyeReduction">HasRedEyeReduction property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHasRedEyeReduction(Boolean hasRedEyeReduction)
        {
            this.hasRedEyeReductionField = hasRedEyeReduction;
            return this;
        }



        /// <summary>
        /// Checks if HasRedEyeReduction property is set
        /// </summary>
        /// <returns>true if HasRedEyeReduction property is set</returns>
        public Boolean IsSetHasRedEyeReduction()
        {
            return  this.hasRedEyeReductionField != null;

        }


        /// <summary>
        /// Gets and sets the HasSelfTimer property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HasSelfTimer")]
        public Boolean HasSelfTimer
        {
            get { return this.hasSelfTimerField.GetValueOrDefault() ; }
            set { this.hasSelfTimerField= value; }
        }



        /// <summary>
        /// Sets the HasSelfTimer property
        /// </summary>
        /// <param name="hasSelfTimer">HasSelfTimer property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHasSelfTimer(Boolean hasSelfTimer)
        {
            this.hasSelfTimerField = hasSelfTimer;
            return this;
        }



        /// <summary>
        /// Checks if HasSelfTimer property is set
        /// </summary>
        /// <returns>true if HasSelfTimer property is set</returns>
        public Boolean IsSetHasSelfTimer()
        {
            return  this.hasSelfTimerField != null;

        }


        /// <summary>
        /// Gets and sets the HasTripodMount property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HasTripodMount")]
        public Boolean HasTripodMount
        {
            get { return this.hasTripodMountField.GetValueOrDefault() ; }
            set { this.hasTripodMountField= value; }
        }



        /// <summary>
        /// Sets the HasTripodMount property
        /// </summary>
        /// <param name="hasTripodMount">HasTripodMount property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHasTripodMount(Boolean hasTripodMount)
        {
            this.hasTripodMountField = hasTripodMount;
            return this;
        }



        /// <summary>
        /// Checks if HasTripodMount property is set
        /// </summary>
        /// <returns>true if HasTripodMount property is set</returns>
        public Boolean IsSetHasTripodMount()
        {
            return  this.hasTripodMountField != null;

        }


        /// <summary>
        /// Gets and sets the HasVideoOut property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HasVideoOut")]
        public Boolean HasVideoOut
        {
            get { return this.hasVideoOutField.GetValueOrDefault() ; }
            set { this.hasVideoOutField= value; }
        }



        /// <summary>
        /// Sets the HasVideoOut property
        /// </summary>
        /// <param name="hasVideoOut">HasVideoOut property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHasVideoOut(Boolean hasVideoOut)
        {
            this.hasVideoOutField = hasVideoOut;
            return this;
        }



        /// <summary>
        /// Checks if HasVideoOut property is set
        /// </summary>
        /// <returns>true if HasVideoOut property is set</returns>
        public Boolean IsSetHasVideoOut()
        {
            return  this.hasVideoOutField != null;

        }


        /// <summary>
        /// Gets and sets the HasViewfinder property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HasViewfinder")]
        public Boolean HasViewfinder
        {
            get { return this.hasViewfinderField.GetValueOrDefault() ; }
            set { this.hasViewfinderField= value; }
        }



        /// <summary>
        /// Sets the HasViewfinder property
        /// </summary>
        /// <param name="hasViewfinder">HasViewfinder property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHasViewfinder(Boolean hasViewfinder)
        {
            this.hasViewfinderField = hasViewfinder;
            return this;
        }



        /// <summary>
        /// Checks if HasViewfinder property is set
        /// </summary>
        /// <returns>true if HasViewfinder property is set</returns>
        public Boolean IsSetHasViewfinder()
        {
            return  this.hasViewfinderField != null;

        }


        /// <summary>
        /// Gets and sets the HazardousMaterialType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HazardousMaterialType")]
        public String HazardousMaterialType
        {
            get { return this.hazardousMaterialTypeField ; }
            set { this.hazardousMaterialTypeField= value; }
        }



        /// <summary>
        /// Sets the HazardousMaterialType property
        /// </summary>
        /// <param name="hazardousMaterialType">HazardousMaterialType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHazardousMaterialType(String hazardousMaterialType)
        {
            this.hazardousMaterialTypeField = hazardousMaterialType;
            return this;
        }



        /// <summary>
        /// Checks if HazardousMaterialType property is set
        /// </summary>
        /// <returns>true if HazardousMaterialType property is set</returns>
        public Boolean IsSetHazardousMaterialType()
        {
            return  this.hazardousMaterialTypeField != null;

        }


        /// <summary>
        /// Gets and sets the HoursOfOperation property.
        /// </summary>
        [XmlElementAttribute(ElementName = "HoursOfOperation")]
        public String HoursOfOperation
        {
            get { return this.hoursOfOperationField ; }
            set { this.hoursOfOperationField= value; }
        }



        /// <summary>
        /// Sets the HoursOfOperation property
        /// </summary>
        /// <param name="hoursOfOperation">HoursOfOperation property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithHoursOfOperation(String hoursOfOperation)
        {
            this.hoursOfOperationField = hoursOfOperation;
            return this;
        }



        /// <summary>
        /// Checks if HoursOfOperation property is set
        /// </summary>
        /// <returns>true if HoursOfOperation property is set</returns>
        public Boolean IsSetHoursOfOperation()
        {
            return  this.hoursOfOperationField != null;

        }


        /// <summary>
        /// Gets and sets the IncludedSoftware property.
        /// </summary>
        [XmlElementAttribute(ElementName = "IncludedSoftware")]
        public String IncludedSoftware
        {
            get { return this.includedSoftwareField ; }
            set { this.includedSoftwareField= value; }
        }



        /// <summary>
        /// Sets the IncludedSoftware property
        /// </summary>
        /// <param name="includedSoftware">IncludedSoftware property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithIncludedSoftware(String includedSoftware)
        {
            this.includedSoftwareField = includedSoftware;
            return this;
        }



        /// <summary>
        /// Checks if IncludedSoftware property is set
        /// </summary>
        /// <returns>true if IncludedSoftware property is set</returns>
        public Boolean IsSetIncludedSoftware()
        {
            return  this.includedSoftwareField != null;

        }


        /// <summary>
        /// Gets and sets the IncludesMp3Player property.
        /// </summary>
        [XmlElementAttribute(ElementName = "IncludesMp3Player")]
        public Boolean IncludesMp3Player
        {
            get { return this.includesMp3PlayerField.GetValueOrDefault() ; }
            set { this.includesMp3PlayerField= value; }
        }



        /// <summary>
        /// Sets the IncludesMp3Player property
        /// </summary>
        /// <param name="includesMp3Player">IncludesMp3Player property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithIncludesMp3Player(Boolean includesMp3Player)
        {
            this.includesMp3PlayerField = includesMp3Player;
            return this;
        }



        /// <summary>
        /// Checks if IncludesMp3Player property is set
        /// </summary>
        /// <returns>true if IncludesMp3Player property is set</returns>
        public Boolean IsSetIncludesMp3Player()
        {
            return  this.includesMp3PlayerField != null;

        }


        /// <summary>
        /// Gets and sets the Indications property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Indications")]
        public String Indications
        {
            get { return this.indicationsField ; }
            set { this.indicationsField= value; }
        }



        /// <summary>
        /// Sets the Indications property
        /// </summary>
        /// <param name="indications">Indications property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithIndications(String indications)
        {
            this.indicationsField = indications;
            return this;
        }



        /// <summary>
        /// Checks if Indications property is set
        /// </summary>
        /// <returns>true if Indications property is set</returns>
        public Boolean IsSetIndications()
        {
            return  this.indicationsField != null;

        }


        /// <summary>
        /// Gets and sets the Ingredients property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Ingredients")]
        public String Ingredients
        {
            get { return this.ingredientsField ; }
            set { this.ingredientsField= value; }
        }



        /// <summary>
        /// Sets the Ingredients property
        /// </summary>
        /// <param name="ingredients">Ingredients property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithIngredients(String ingredients)
        {
            this.ingredientsField = ingredients;
            return this;
        }



        /// <summary>
        /// Checks if Ingredients property is set
        /// </summary>
        /// <returns>true if Ingredients property is set</returns>
        public Boolean IsSetIngredients()
        {
            return  this.ingredientsField != null;

        }


        /// <summary>
        /// Gets and sets the InstrumentKey property.
        /// </summary>
        [XmlElementAttribute(ElementName = "InstrumentKey")]
        public String InstrumentKey
        {
            get { return this.instrumentKeyField ; }
            set { this.instrumentKeyField= value; }
        }



        /// <summary>
        /// Sets the InstrumentKey property
        /// </summary>
        /// <param name="instrumentKey">InstrumentKey property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithInstrumentKey(String instrumentKey)
        {
            this.instrumentKeyField = instrumentKey;
            return this;
        }



        /// <summary>
        /// Checks if InstrumentKey property is set
        /// </summary>
        /// <returns>true if InstrumentKey property is set</returns>
        public Boolean IsSetInstrumentKey()
        {
            return  this.instrumentKeyField != null;

        }


        /// <summary>
        /// Gets and sets the IsAutographed property.
        /// </summary>
        [XmlElementAttribute(ElementName = "IsAutographed")]
        public Boolean IsAutographed
        {
            get { return this.isAutographedField.GetValueOrDefault() ; }
            set { this.isAutographedField= value; }
        }



        /// <summary>
        /// Sets the IsAutographed property
        /// </summary>
        /// <param name="isAutographed">IsAutographed property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithIsAutographed(Boolean isAutographed)
        {
            this.isAutographedField = isAutographed;
            return this;
        }



        /// <summary>
        /// Checks if IsAutographed property is set
        /// </summary>
        /// <returns>true if IsAutographed property is set</returns>
        public Boolean IsSetIsAutographed()
        {
            return  this.isAutographedField != null;

        }


        /// <summary>
        /// Gets and sets the ISBN property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ISBN")]
        public String ISBN
        {
            get { return this.ISBNField ; }
            set { this.ISBNField= value; }
        }



        /// <summary>
        /// Sets the ISBN property
        /// </summary>
        /// <param name="ISBN">ISBN property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithISBN(String ISBN)
        {
            this.ISBNField = ISBN;
            return this;
        }



        /// <summary>
        /// Checks if ISBN property is set
        /// </summary>
        /// <returns>true if ISBN property is set</returns>
        public Boolean IsSetISBN()
        {
            return  this.ISBNField != null;

        }


        /// <summary>
        /// Gets and sets the IsFragile property.
        /// </summary>
        [XmlElementAttribute(ElementName = "IsFragile")]
        public Boolean IsFragile
        {
            get { return this.isFragileField.GetValueOrDefault() ; }
            set { this.isFragileField= value; }
        }



        /// <summary>
        /// Sets the IsFragile property
        /// </summary>
        /// <param name="isFragile">IsFragile property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithIsFragile(Boolean isFragile)
        {
            this.isFragileField = isFragile;
            return this;
        }



        /// <summary>
        /// Checks if IsFragile property is set
        /// </summary>
        /// <returns>true if IsFragile property is set</returns>
        public Boolean IsSetIsFragile()
        {
            return  this.isFragileField != null;

        }


        /// <summary>
        /// Gets and sets the IsLabCreated property.
        /// </summary>
        [XmlElementAttribute(ElementName = "IsLabCreated")]
        public Boolean IsLabCreated
        {
            get { return this.isLabCreatedField.GetValueOrDefault() ; }
            set { this.isLabCreatedField= value; }
        }



        /// <summary>
        /// Sets the IsLabCreated property
        /// </summary>
        /// <param name="isLabCreated">IsLabCreated property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithIsLabCreated(Boolean isLabCreated)
        {
            this.isLabCreatedField = isLabCreated;
            return this;
        }



        /// <summary>
        /// Checks if IsLabCreated property is set
        /// </summary>
        /// <returns>true if IsLabCreated property is set</returns>
        public Boolean IsSetIsLabCreated()
        {
            return  this.isLabCreatedField != null;

        }


        /// <summary>
        /// Gets and sets the IsMemorabilia property.
        /// </summary>
        [XmlElementAttribute(ElementName = "IsMemorabilia")]
        public Boolean IsMemorabilia
        {
            get { return this.isMemorabiliaField.GetValueOrDefault() ; }
            set { this.isMemorabiliaField= value; }
        }



        /// <summary>
        /// Sets the IsMemorabilia property
        /// </summary>
        /// <param name="isMemorabilia">IsMemorabilia property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithIsMemorabilia(Boolean isMemorabilia)
        {
            this.isMemorabiliaField = isMemorabilia;
            return this;
        }



        /// <summary>
        /// Checks if IsMemorabilia property is set
        /// </summary>
        /// <returns>true if IsMemorabilia property is set</returns>
        public Boolean IsSetIsMemorabilia()
        {
            return  this.isMemorabiliaField != null;

        }


        /// <summary>
        /// Gets and sets the ISOEquivalent property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ISOEquivalent")]
        public NonNegativeIntegerWithUnits ISOEquivalent
        {
            get { return this.ISOEquivalentField ; }
            set { this.ISOEquivalentField = value; }
        }



        /// <summary>
        /// Sets the ISOEquivalent property
        /// </summary>
        /// <param name="ISOEquivalent">ISOEquivalent property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithISOEquivalent(NonNegativeIntegerWithUnits ISOEquivalent)
        {
            this.ISOEquivalentField = ISOEquivalent;
            return this;
        }



        /// <summary>
        /// Checks if ISOEquivalent property is set
        /// </summary>
        /// <returns>true if ISOEquivalent property is set</returns>
        public Boolean IsSetISOEquivalent()
        {
            return this.ISOEquivalentField != null;
        }




        /// <summary>
        /// Gets and sets the IssuesPerYear property.
        /// </summary>
        [XmlElementAttribute(ElementName = "IssuesPerYear")]
        public String IssuesPerYear
        {
            get { return this.issuesPerYearField ; }
            set { this.issuesPerYearField= value; }
        }



        /// <summary>
        /// Sets the IssuesPerYear property
        /// </summary>
        /// <param name="issuesPerYear">IssuesPerYear property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithIssuesPerYear(String issuesPerYear)
        {
            this.issuesPerYearField = issuesPerYear;
            return this;
        }



        /// <summary>
        /// Checks if IssuesPerYear property is set
        /// </summary>
        /// <returns>true if IssuesPerYear property is set</returns>
        public Boolean IsSetIssuesPerYear()
        {
            return  this.issuesPerYearField != null;

        }


        /// <summary>
        /// Gets and sets the ItemDimensions property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ItemDimensions")]
        public ItemDimensions ItemDimensions
        {
            get { return this.itemDimensionsField ; }
            set { this.itemDimensionsField = value; }
        }



        /// <summary>
        /// Sets the ItemDimensions property
        /// </summary>
        /// <param name="itemDimensions">ItemDimensions property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithItemDimensions(ItemDimensions itemDimensions)
        {
            this.itemDimensionsField = itemDimensions;
            return this;
        }



        /// <summary>
        /// Checks if ItemDimensions property is set
        /// </summary>
        /// <returns>true if ItemDimensions property is set</returns>
        public Boolean IsSetItemDimensions()
        {
            return this.itemDimensionsField != null;
        }




        /// <summary>
        /// Gets and sets the KeyboardDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "KeyboardDescription")]
        public String KeyboardDescription
        {
            get { return this.keyboardDescriptionField ; }
            set { this.keyboardDescriptionField= value; }
        }



        /// <summary>
        /// Sets the KeyboardDescription property
        /// </summary>
        /// <param name="keyboardDescription">KeyboardDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithKeyboardDescription(String keyboardDescription)
        {
            this.keyboardDescriptionField = keyboardDescription;
            return this;
        }



        /// <summary>
        /// Checks if KeyboardDescription property is set
        /// </summary>
        /// <returns>true if KeyboardDescription property is set</returns>
        public Boolean IsSetKeyboardDescription()
        {
            return  this.keyboardDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the Label property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Label")]
        public String Label
        {
            get { return this.labelField ; }
            set { this.labelField= value; }
        }



        /// <summary>
        /// Sets the Label property
        /// </summary>
        /// <param name="label">Label property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithLabel(String label)
        {
            this.labelField = label;
            return this;
        }



        /// <summary>
        /// Checks if Label property is set
        /// </summary>
        /// <returns>true if Label property is set</returns>
        public Boolean IsSetLabel()
        {
            return  this.labelField != null;

        }


        /// <summary>
        /// Gets and sets the Languages property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Languages")]
        public Languages Languages
        {
            get { return this.languagesField ; }
            set { this.languagesField = value; }
        }



        /// <summary>
        /// Sets the Languages property
        /// </summary>
        /// <param name="languages">Languages property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithLanguages(Languages languages)
        {
            this.languagesField = languages;
            return this;
        }



        /// <summary>
        /// Checks if Languages property is set
        /// </summary>
        /// <returns>true if Languages property is set</returns>
        public Boolean IsSetLanguages()
        {
            return this.languagesField != null;
        }




        /// <summary>
        /// Gets and sets the LegalDisclaimer property.
        /// </summary>
        [XmlElementAttribute(ElementName = "LegalDisclaimer")]
        public String LegalDisclaimer
        {
            get { return this.legalDisclaimerField ; }
            set { this.legalDisclaimerField= value; }
        }



        /// <summary>
        /// Sets the LegalDisclaimer property
        /// </summary>
        /// <param name="legalDisclaimer">LegalDisclaimer property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithLegalDisclaimer(String legalDisclaimer)
        {
            this.legalDisclaimerField = legalDisclaimer;
            return this;
        }



        /// <summary>
        /// Checks if LegalDisclaimer property is set
        /// </summary>
        /// <returns>true if LegalDisclaimer property is set</returns>
        public Boolean IsSetLegalDisclaimer()
        {
            return  this.legalDisclaimerField != null;

        }


        /// <summary>
        /// Gets and sets the LineVoltage property.
        /// </summary>
        [XmlElementAttribute(ElementName = "LineVoltage")]
        public String LineVoltage
        {
            get { return this.lineVoltageField ; }
            set { this.lineVoltageField= value; }
        }



        /// <summary>
        /// Sets the LineVoltage property
        /// </summary>
        /// <param name="lineVoltage">LineVoltage property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithLineVoltage(String lineVoltage)
        {
            this.lineVoltageField = lineVoltage;
            return this;
        }



        /// <summary>
        /// Checks if LineVoltage property is set
        /// </summary>
        /// <returns>true if LineVoltage property is set</returns>
        public Boolean IsSetLineVoltage()
        {
            return  this.lineVoltageField != null;

        }


        /// <summary>
        /// Gets and sets the ListPrice property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ListPrice")]
        public Price ListPrice
        {
            get { return this.listPriceField ; }
            set { this.listPriceField = value; }
        }



        /// <summary>
        /// Sets the ListPrice property
        /// </summary>
        /// <param name="listPrice">ListPrice property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithListPrice(Price listPrice)
        {
            this.listPriceField = listPrice;
            return this;
        }



        /// <summary>
        /// Checks if ListPrice property is set
        /// </summary>
        /// <returns>true if ListPrice property is set</returns>
        public Boolean IsSetListPrice()
        {
            return this.listPriceField != null;
        }




        /// <summary>
        /// Gets and sets the MacroFocusRange property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MacroFocusRange")]
        public String MacroFocusRange
        {
            get { return this.macroFocusRangeField ; }
            set { this.macroFocusRangeField= value; }
        }



        /// <summary>
        /// Sets the MacroFocusRange property
        /// </summary>
        /// <param name="macroFocusRange">MacroFocusRange property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMacroFocusRange(String macroFocusRange)
        {
            this.macroFocusRangeField = macroFocusRange;
            return this;
        }



        /// <summary>
        /// Checks if MacroFocusRange property is set
        /// </summary>
        /// <returns>true if MacroFocusRange property is set</returns>
        public Boolean IsSetMacroFocusRange()
        {
            return  this.macroFocusRangeField != null;

        }


        /// <summary>
        /// Gets and sets the MagazineType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MagazineType")]
        public String MagazineType
        {
            get { return this.magazineTypeField ; }
            set { this.magazineTypeField= value; }
        }



        /// <summary>
        /// Sets the MagazineType property
        /// </summary>
        /// <param name="magazineType">MagazineType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMagazineType(String magazineType)
        {
            this.magazineTypeField = magazineType;
            return this;
        }



        /// <summary>
        /// Checks if MagazineType property is set
        /// </summary>
        /// <returns>true if MagazineType property is set</returns>
        public Boolean IsSetMagazineType()
        {
            return  this.magazineTypeField != null;

        }


        /// <summary>
        /// Gets and sets the MalletHardness property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MalletHardness")]
        public String MalletHardness
        {
            get { return this.malletHardnessField ; }
            set { this.malletHardnessField= value; }
        }



        /// <summary>
        /// Sets the MalletHardness property
        /// </summary>
        /// <param name="malletHardness">MalletHardness property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMalletHardness(String malletHardness)
        {
            this.malletHardnessField = malletHardness;
            return this;
        }



        /// <summary>
        /// Checks if MalletHardness property is set
        /// </summary>
        /// <returns>true if MalletHardness property is set</returns>
        public Boolean IsSetMalletHardness()
        {
            return  this.malletHardnessField != null;

        }


        /// <summary>
        /// Gets and sets the Manufacturer property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Manufacturer")]
        public String Manufacturer
        {
            get { return this.manufacturerField ; }
            set { this.manufacturerField= value; }
        }



        /// <summary>
        /// Sets the Manufacturer property
        /// </summary>
        /// <param name="manufacturer">Manufacturer property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithManufacturer(String manufacturer)
        {
            this.manufacturerField = manufacturer;
            return this;
        }



        /// <summary>
        /// Checks if Manufacturer property is set
        /// </summary>
        /// <returns>true if Manufacturer property is set</returns>
        public Boolean IsSetManufacturer()
        {
            return  this.manufacturerField != null;

        }


        /// <summary>
        /// Gets and sets the ManufacturerLaborWarrantyDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ManufacturerLaborWarrantyDescription")]
        public String ManufacturerLaborWarrantyDescription
        {
            get { return this.manufacturerLaborWarrantyDescriptionField ; }
            set { this.manufacturerLaborWarrantyDescriptionField= value; }
        }



        /// <summary>
        /// Sets the ManufacturerLaborWarrantyDescription property
        /// </summary>
        /// <param name="manufacturerLaborWarrantyDescription">ManufacturerLaborWarrantyDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithManufacturerLaborWarrantyDescription(String manufacturerLaborWarrantyDescription)
        {
            this.manufacturerLaborWarrantyDescriptionField = manufacturerLaborWarrantyDescription;
            return this;
        }



        /// <summary>
        /// Checks if ManufacturerLaborWarrantyDescription property is set
        /// </summary>
        /// <returns>true if ManufacturerLaborWarrantyDescription property is set</returns>
        public Boolean IsSetManufacturerLaborWarrantyDescription()
        {
            return  this.manufacturerLaborWarrantyDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the ManufacturerMaximumAge property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ManufacturerMaximumAge")]
        public DecimalWithUnits ManufacturerMaximumAge
        {
            get { return this.manufacturerMaximumAgeField ; }
            set { this.manufacturerMaximumAgeField = value; }
        }



        /// <summary>
        /// Sets the ManufacturerMaximumAge property
        /// </summary>
        /// <param name="manufacturerMaximumAge">ManufacturerMaximumAge property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithManufacturerMaximumAge(DecimalWithUnits manufacturerMaximumAge)
        {
            this.manufacturerMaximumAgeField = manufacturerMaximumAge;
            return this;
        }



        /// <summary>
        /// Checks if ManufacturerMaximumAge property is set
        /// </summary>
        /// <returns>true if ManufacturerMaximumAge property is set</returns>
        public Boolean IsSetManufacturerMaximumAge()
        {
            return this.manufacturerMaximumAgeField != null;
        }




        /// <summary>
        /// Gets and sets the ManufacturerMinimumAge property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ManufacturerMinimumAge")]
        public DecimalWithUnits ManufacturerMinimumAge
        {
            get { return this.manufacturerMinimumAgeField ; }
            set { this.manufacturerMinimumAgeField = value; }
        }



        /// <summary>
        /// Sets the ManufacturerMinimumAge property
        /// </summary>
        /// <param name="manufacturerMinimumAge">ManufacturerMinimumAge property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithManufacturerMinimumAge(DecimalWithUnits manufacturerMinimumAge)
        {
            this.manufacturerMinimumAgeField = manufacturerMinimumAge;
            return this;
        }



        /// <summary>
        /// Checks if ManufacturerMinimumAge property is set
        /// </summary>
        /// <returns>true if ManufacturerMinimumAge property is set</returns>
        public Boolean IsSetManufacturerMinimumAge()
        {
            return this.manufacturerMinimumAgeField != null;
        }




        /// <summary>
        /// Gets and sets the ManufacturerPartsWarrantyDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ManufacturerPartsWarrantyDescription")]
        public String ManufacturerPartsWarrantyDescription
        {
            get { return this.manufacturerPartsWarrantyDescriptionField ; }
            set { this.manufacturerPartsWarrantyDescriptionField= value; }
        }



        /// <summary>
        /// Sets the ManufacturerPartsWarrantyDescription property
        /// </summary>
        /// <param name="manufacturerPartsWarrantyDescription">ManufacturerPartsWarrantyDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithManufacturerPartsWarrantyDescription(String manufacturerPartsWarrantyDescription)
        {
            this.manufacturerPartsWarrantyDescriptionField = manufacturerPartsWarrantyDescription;
            return this;
        }



        /// <summary>
        /// Checks if ManufacturerPartsWarrantyDescription property is set
        /// </summary>
        /// <returns>true if ManufacturerPartsWarrantyDescription property is set</returns>
        public Boolean IsSetManufacturerPartsWarrantyDescription()
        {
            return  this.manufacturerPartsWarrantyDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the MaterialType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaterialType")]
        public String MaterialType
        {
            get { return this.materialTypeField ; }
            set { this.materialTypeField= value; }
        }



        /// <summary>
        /// Sets the MaterialType property
        /// </summary>
        /// <param name="materialType">MaterialType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaterialType(String materialType)
        {
            this.materialTypeField = materialType;
            return this;
        }



        /// <summary>
        /// Checks if MaterialType property is set
        /// </summary>
        /// <returns>true if MaterialType property is set</returns>
        public Boolean IsSetMaterialType()
        {
            return  this.materialTypeField != null;

        }


        /// <summary>
        /// Gets and sets the MaximumAperture property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumAperture")]
        public DecimalWithUnits MaximumAperture
        {
            get { return this.maximumApertureField ; }
            set { this.maximumApertureField = value; }
        }



        /// <summary>
        /// Sets the MaximumAperture property
        /// </summary>
        /// <param name="maximumAperture">MaximumAperture property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumAperture(DecimalWithUnits maximumAperture)
        {
            this.maximumApertureField = maximumAperture;
            return this;
        }



        /// <summary>
        /// Checks if MaximumAperture property is set
        /// </summary>
        /// <returns>true if MaximumAperture property is set</returns>
        public Boolean IsSetMaximumAperture()
        {
            return this.maximumApertureField != null;
        }




        /// <summary>
        /// Gets and sets the MaximumColorDepth property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumColorDepth")]
        public String MaximumColorDepth
        {
            get { return this.maximumColorDepthField ; }
            set { this.maximumColorDepthField= value; }
        }



        /// <summary>
        /// Sets the MaximumColorDepth property
        /// </summary>
        /// <param name="maximumColorDepth">MaximumColorDepth property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumColorDepth(String maximumColorDepth)
        {
            this.maximumColorDepthField = maximumColorDepth;
            return this;
        }



        /// <summary>
        /// Checks if MaximumColorDepth property is set
        /// </summary>
        /// <returns>true if MaximumColorDepth property is set</returns>
        public Boolean IsSetMaximumColorDepth()
        {
            return  this.maximumColorDepthField != null;

        }


        /// <summary>
        /// Gets and sets the MaximumFocalLength property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumFocalLength")]
        public DecimalWithUnits MaximumFocalLength
        {
            get { return this.maximumFocalLengthField ; }
            set { this.maximumFocalLengthField = value; }
        }



        /// <summary>
        /// Sets the MaximumFocalLength property
        /// </summary>
        /// <param name="maximumFocalLength">MaximumFocalLength property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumFocalLength(DecimalWithUnits maximumFocalLength)
        {
            this.maximumFocalLengthField = maximumFocalLength;
            return this;
        }



        /// <summary>
        /// Checks if MaximumFocalLength property is set
        /// </summary>
        /// <returns>true if MaximumFocalLength property is set</returns>
        public Boolean IsSetMaximumFocalLength()
        {
            return this.maximumFocalLengthField != null;
        }




        /// <summary>
        /// Gets and sets the MaximumHighResolutionImages property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumHighResolutionImages")]
        public NonNegativeIntegerWithUnits MaximumHighResolutionImages
        {
            get { return this.maximumHighResolutionImagesField ; }
            set { this.maximumHighResolutionImagesField = value; }
        }



        /// <summary>
        /// Sets the MaximumHighResolutionImages property
        /// </summary>
        /// <param name="maximumHighResolutionImages">MaximumHighResolutionImages property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumHighResolutionImages(NonNegativeIntegerWithUnits maximumHighResolutionImages)
        {
            this.maximumHighResolutionImagesField = maximumHighResolutionImages;
            return this;
        }



        /// <summary>
        /// Checks if MaximumHighResolutionImages property is set
        /// </summary>
        /// <returns>true if MaximumHighResolutionImages property is set</returns>
        public Boolean IsSetMaximumHighResolutionImages()
        {
            return this.maximumHighResolutionImagesField != null;
        }




        /// <summary>
        /// Gets and sets the MaximumHorizontalResolution property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumHorizontalResolution")]
        public NonNegativeIntegerWithUnits MaximumHorizontalResolution
        {
            get { return this.maximumHorizontalResolutionField ; }
            set { this.maximumHorizontalResolutionField = value; }
        }



        /// <summary>
        /// Sets the MaximumHorizontalResolution property
        /// </summary>
        /// <param name="maximumHorizontalResolution">MaximumHorizontalResolution property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumHorizontalResolution(NonNegativeIntegerWithUnits maximumHorizontalResolution)
        {
            this.maximumHorizontalResolutionField = maximumHorizontalResolution;
            return this;
        }



        /// <summary>
        /// Checks if MaximumHorizontalResolution property is set
        /// </summary>
        /// <returns>true if MaximumHorizontalResolution property is set</returns>
        public Boolean IsSetMaximumHorizontalResolution()
        {
            return this.maximumHorizontalResolutionField != null;
        }




        /// <summary>
        /// Gets and sets the MaximumLowResolutionImages property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumLowResolutionImages")]
        public String MaximumLowResolutionImages
        {
            get { return this.maximumLowResolutionImagesField ; }
            set { this.maximumLowResolutionImagesField= value; }
        }



        /// <summary>
        /// Sets the MaximumLowResolutionImages property
        /// </summary>
        /// <param name="maximumLowResolutionImages">MaximumLowResolutionImages property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumLowResolutionImages(String maximumLowResolutionImages)
        {
            this.maximumLowResolutionImagesField = maximumLowResolutionImages;
            return this;
        }



        /// <summary>
        /// Checks if MaximumLowResolutionImages property is set
        /// </summary>
        /// <returns>true if MaximumLowResolutionImages property is set</returns>
        public Boolean IsSetMaximumLowResolutionImages()
        {
            return  this.maximumLowResolutionImagesField != null;

        }


        /// <summary>
        /// Gets and sets the MaximumResolution property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumResolution")]
        public DecimalWithUnits MaximumResolution
        {
            get { return this.maximumResolutionField ; }
            set { this.maximumResolutionField = value; }
        }



        /// <summary>
        /// Sets the MaximumResolution property
        /// </summary>
        /// <param name="maximumResolution">MaximumResolution property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumResolution(DecimalWithUnits maximumResolution)
        {
            this.maximumResolutionField = maximumResolution;
            return this;
        }



        /// <summary>
        /// Checks if MaximumResolution property is set
        /// </summary>
        /// <returns>true if MaximumResolution property is set</returns>
        public Boolean IsSetMaximumResolution()
        {
            return this.maximumResolutionField != null;
        }




        /// <summary>
        /// Gets and sets the MaximumShutterSpeed property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumShutterSpeed")]
        public DecimalWithUnits MaximumShutterSpeed
        {
            get { return this.maximumShutterSpeedField ; }
            set { this.maximumShutterSpeedField = value; }
        }



        /// <summary>
        /// Sets the MaximumShutterSpeed property
        /// </summary>
        /// <param name="maximumShutterSpeed">MaximumShutterSpeed property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumShutterSpeed(DecimalWithUnits maximumShutterSpeed)
        {
            this.maximumShutterSpeedField = maximumShutterSpeed;
            return this;
        }



        /// <summary>
        /// Checks if MaximumShutterSpeed property is set
        /// </summary>
        /// <returns>true if MaximumShutterSpeed property is set</returns>
        public Boolean IsSetMaximumShutterSpeed()
        {
            return this.maximumShutterSpeedField != null;
        }




        /// <summary>
        /// Gets and sets the MaximumVerticalResolution property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumVerticalResolution")]
        public NonNegativeIntegerWithUnits MaximumVerticalResolution
        {
            get { return this.maximumVerticalResolutionField ; }
            set { this.maximumVerticalResolutionField = value; }
        }



        /// <summary>
        /// Sets the MaximumVerticalResolution property
        /// </summary>
        /// <param name="maximumVerticalResolution">MaximumVerticalResolution property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumVerticalResolution(NonNegativeIntegerWithUnits maximumVerticalResolution)
        {
            this.maximumVerticalResolutionField = maximumVerticalResolution;
            return this;
        }



        /// <summary>
        /// Checks if MaximumVerticalResolution property is set
        /// </summary>
        /// <returns>true if MaximumVerticalResolution property is set</returns>
        public Boolean IsSetMaximumVerticalResolution()
        {
            return this.maximumVerticalResolutionField != null;
        }




        /// <summary>
        /// Gets and sets the MaximumWeightRecommendation property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MaximumWeightRecommendation")]
        public DecimalWithUnits MaximumWeightRecommendation
        {
            get { return this.maximumWeightRecommendationField ; }
            set { this.maximumWeightRecommendationField = value; }
        }



        /// <summary>
        /// Sets the MaximumWeightRecommendation property
        /// </summary>
        /// <param name="maximumWeightRecommendation">MaximumWeightRecommendation property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMaximumWeightRecommendation(DecimalWithUnits maximumWeightRecommendation)
        {
            this.maximumWeightRecommendationField = maximumWeightRecommendation;
            return this;
        }



        /// <summary>
        /// Checks if MaximumWeightRecommendation property is set
        /// </summary>
        /// <returns>true if MaximumWeightRecommendation property is set</returns>
        public Boolean IsSetMaximumWeightRecommendation()
        {
            return this.maximumWeightRecommendationField != null;
        }




        /// <summary>
        /// Gets and sets the MemorySlotsAvailable property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MemorySlotsAvailable")]
        public Decimal MemorySlotsAvailable
        {
            get { return this.memorySlotsAvailableField.GetValueOrDefault() ; }
            set { this.memorySlotsAvailableField= value; }
        }



        /// <summary>
        /// Sets the MemorySlotsAvailable property
        /// </summary>
        /// <param name="memorySlotsAvailable">MemorySlotsAvailable property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMemorySlotsAvailable(Decimal memorySlotsAvailable)
        {
            this.memorySlotsAvailableField = memorySlotsAvailable;
            return this;
        }



        /// <summary>
        /// Checks if MemorySlotsAvailable property is set
        /// </summary>
        /// <returns>true if MemorySlotsAvailable property is set</returns>
        public Boolean IsSetMemorySlotsAvailable()
        {
            return  this.memorySlotsAvailableField != null;

        }


        /// <summary>
        /// Gets and sets the MetalStamp property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MetalStamp")]
        public String MetalStamp
        {
            get { return this.metalStampField ; }
            set { this.metalStampField= value; }
        }



        /// <summary>
        /// Sets the MetalStamp property
        /// </summary>
        /// <param name="metalStamp">MetalStamp property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMetalStamp(String metalStamp)
        {
            this.metalStampField = metalStamp;
            return this;
        }



        /// <summary>
        /// Checks if MetalStamp property is set
        /// </summary>
        /// <returns>true if MetalStamp property is set</returns>
        public Boolean IsSetMetalStamp()
        {
            return  this.metalStampField != null;

        }


        /// <summary>
        /// Gets and sets the MetalType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MetalType")]
        public String MetalType
        {
            get { return this.metalTypeField ; }
            set { this.metalTypeField= value; }
        }



        /// <summary>
        /// Sets the MetalType property
        /// </summary>
        /// <param name="metalType">MetalType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMetalType(String metalType)
        {
            this.metalTypeField = metalType;
            return this;
        }



        /// <summary>
        /// Checks if MetalType property is set
        /// </summary>
        /// <returns>true if MetalType property is set</returns>
        public Boolean IsSetMetalType()
        {
            return  this.metalTypeField != null;

        }


        /// <summary>
        /// Gets and sets the MiniMovieDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MiniMovieDescription")]
        public String MiniMovieDescription
        {
            get { return this.miniMovieDescriptionField ; }
            set { this.miniMovieDescriptionField= value; }
        }



        /// <summary>
        /// Sets the MiniMovieDescription property
        /// </summary>
        /// <param name="miniMovieDescription">MiniMovieDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMiniMovieDescription(String miniMovieDescription)
        {
            this.miniMovieDescriptionField = miniMovieDescription;
            return this;
        }



        /// <summary>
        /// Checks if MiniMovieDescription property is set
        /// </summary>
        /// <returns>true if MiniMovieDescription property is set</returns>
        public Boolean IsSetMiniMovieDescription()
        {
            return  this.miniMovieDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the MinimumFocalLength property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MinimumFocalLength")]
        public DecimalWithUnits MinimumFocalLength
        {
            get { return this.minimumFocalLengthField ; }
            set { this.minimumFocalLengthField = value; }
        }



        /// <summary>
        /// Sets the MinimumFocalLength property
        /// </summary>
        /// <param name="minimumFocalLength">MinimumFocalLength property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMinimumFocalLength(DecimalWithUnits minimumFocalLength)
        {
            this.minimumFocalLengthField = minimumFocalLength;
            return this;
        }



        /// <summary>
        /// Checks if MinimumFocalLength property is set
        /// </summary>
        /// <returns>true if MinimumFocalLength property is set</returns>
        public Boolean IsSetMinimumFocalLength()
        {
            return this.minimumFocalLengthField != null;
        }




        /// <summary>
        /// Gets and sets the MinimumShutterSpeed property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MinimumShutterSpeed")]
        public DecimalWithUnits MinimumShutterSpeed
        {
            get { return this.minimumShutterSpeedField ; }
            set { this.minimumShutterSpeedField = value; }
        }



        /// <summary>
        /// Sets the MinimumShutterSpeed property
        /// </summary>
        /// <param name="minimumShutterSpeed">MinimumShutterSpeed property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMinimumShutterSpeed(DecimalWithUnits minimumShutterSpeed)
        {
            this.minimumShutterSpeedField = minimumShutterSpeed;
            return this;
        }



        /// <summary>
        /// Checks if MinimumShutterSpeed property is set
        /// </summary>
        /// <returns>true if MinimumShutterSpeed property is set</returns>
        public Boolean IsSetMinimumShutterSpeed()
        {
            return this.minimumShutterSpeedField != null;
        }




        /// <summary>
        /// Gets and sets the Model property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Model")]
        public String Model
        {
            get { return this.modelField ; }
            set { this.modelField= value; }
        }



        /// <summary>
        /// Sets the Model property
        /// </summary>
        /// <param name="model">Model property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithModel(String model)
        {
            this.modelField = model;
            return this;
        }



        /// <summary>
        /// Checks if Model property is set
        /// </summary>
        /// <returns>true if Model property is set</returns>
        public Boolean IsSetModel()
        {
            return  this.modelField != null;

        }


        /// <summary>
        /// Gets and sets the ModelYear property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ModelYear")]
        public Decimal ModelYear
        {
            get { return this.modelYearField.GetValueOrDefault() ; }
            set { this.modelYearField= value; }
        }



        /// <summary>
        /// Sets the ModelYear property
        /// </summary>
        /// <param name="modelYear">ModelYear property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithModelYear(Decimal modelYear)
        {
            this.modelYearField = modelYear;
            return this;
        }



        /// <summary>
        /// Checks if ModelYear property is set
        /// </summary>
        /// <returns>true if ModelYear property is set</returns>
        public Boolean IsSetModelYear()
        {
            return  this.modelYearField != null;

        }


        /// <summary>
        /// Gets and sets the ModemDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ModemDescription")]
        public String ModemDescription
        {
            get { return this.modemDescriptionField ; }
            set { this.modemDescriptionField= value; }
        }



        /// <summary>
        /// Sets the ModemDescription property
        /// </summary>
        /// <param name="modemDescription">ModemDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithModemDescription(String modemDescription)
        {
            this.modemDescriptionField = modemDescription;
            return this;
        }



        /// <summary>
        /// Checks if ModemDescription property is set
        /// </summary>
        /// <returns>true if ModemDescription property is set</returns>
        public Boolean IsSetModemDescription()
        {
            return  this.modemDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the MonitorSize property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MonitorSize")]
        public DecimalWithUnits MonitorSize
        {
            get { return this.monitorSizeField ; }
            set { this.monitorSizeField = value; }
        }



        /// <summary>
        /// Sets the MonitorSize property
        /// </summary>
        /// <param name="monitorSize">MonitorSize property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMonitorSize(DecimalWithUnits monitorSize)
        {
            this.monitorSizeField = monitorSize;
            return this;
        }



        /// <summary>
        /// Checks if MonitorSize property is set
        /// </summary>
        /// <returns>true if MonitorSize property is set</returns>
        public Boolean IsSetMonitorSize()
        {
            return this.monitorSizeField != null;
        }




        /// <summary>
        /// Gets and sets the MonitorViewableDiagonalSize property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MonitorViewableDiagonalSize")]
        public DecimalWithUnits MonitorViewableDiagonalSize
        {
            get { return this.monitorViewableDiagonalSizeField ; }
            set { this.monitorViewableDiagonalSizeField = value; }
        }



        /// <summary>
        /// Sets the MonitorViewableDiagonalSize property
        /// </summary>
        /// <param name="monitorViewableDiagonalSize">MonitorViewableDiagonalSize property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMonitorViewableDiagonalSize(DecimalWithUnits monitorViewableDiagonalSize)
        {
            this.monitorViewableDiagonalSizeField = monitorViewableDiagonalSize;
            return this;
        }



        /// <summary>
        /// Checks if MonitorViewableDiagonalSize property is set
        /// </summary>
        /// <returns>true if MonitorViewableDiagonalSize property is set</returns>
        public Boolean IsSetMonitorViewableDiagonalSize()
        {
            return this.monitorViewableDiagonalSizeField != null;
        }




        /// <summary>
        /// Gets and sets the MouseDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MouseDescription")]
        public String MouseDescription
        {
            get { return this.mouseDescriptionField ; }
            set { this.mouseDescriptionField= value; }
        }



        /// <summary>
        /// Sets the MouseDescription property
        /// </summary>
        /// <param name="mouseDescription">MouseDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMouseDescription(String mouseDescription)
        {
            this.mouseDescriptionField = mouseDescription;
            return this;
        }



        /// <summary>
        /// Checks if MouseDescription property is set
        /// </summary>
        /// <returns>true if MouseDescription property is set</returns>
        public Boolean IsSetMouseDescription()
        {
            return  this.mouseDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the MPN property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MPN")]
        public String MPN
        {
            get { return this.MPNField ; }
            set { this.MPNField= value; }
        }



        /// <summary>
        /// Sets the MPN property
        /// </summary>
        /// <param name="MPN">MPN property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMPN(String MPN)
        {
            this.MPNField = MPN;
            return this;
        }



        /// <summary>
        /// Checks if MPN property is set
        /// </summary>
        /// <returns>true if MPN property is set</returns>
        public Boolean IsSetMPN()
        {
            return  this.MPNField != null;

        }


        /// <summary>
        /// Gets and sets the MusicalStyle property.
        /// </summary>
        [XmlElementAttribute(ElementName = "MusicalStyle")]
        public String MusicalStyle
        {
            get { return this.musicalStyleField ; }
            set { this.musicalStyleField= value; }
        }



        /// <summary>
        /// Sets the MusicalStyle property
        /// </summary>
        /// <param name="musicalStyle">MusicalStyle property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithMusicalStyle(String musicalStyle)
        {
            this.musicalStyleField = musicalStyle;
            return this;
        }



        /// <summary>
        /// Checks if MusicalStyle property is set
        /// </summary>
        /// <returns>true if MusicalStyle property is set</returns>
        public Boolean IsSetMusicalStyle()
        {
            return  this.musicalStyleField != null;

        }


        /// <summary>
        /// Gets and sets the NativeResolution property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NativeResolution")]
        public String NativeResolution
        {
            get { return this.nativeResolutionField ; }
            set { this.nativeResolutionField= value; }
        }



        /// <summary>
        /// Sets the NativeResolution property
        /// </summary>
        /// <param name="nativeResolution">NativeResolution property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNativeResolution(String nativeResolution)
        {
            this.nativeResolutionField = nativeResolution;
            return this;
        }



        /// <summary>
        /// Checks if NativeResolution property is set
        /// </summary>
        /// <returns>true if NativeResolution property is set</returns>
        public Boolean IsSetNativeResolution()
        {
            return  this.nativeResolutionField != null;

        }


        /// <summary>
        /// Gets and sets the Neighborhood property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Neighborhood")]
        public String Neighborhood
        {
            get { return this.neighborhoodField ; }
            set { this.neighborhoodField= value; }
        }



        /// <summary>
        /// Sets the Neighborhood property
        /// </summary>
        /// <param name="neighborhood">Neighborhood property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNeighborhood(String neighborhood)
        {
            this.neighborhoodField = neighborhood;
            return this;
        }



        /// <summary>
        /// Checks if Neighborhood property is set
        /// </summary>
        /// <returns>true if Neighborhood property is set</returns>
        public Boolean IsSetNeighborhood()
        {
            return  this.neighborhoodField != null;

        }


        /// <summary>
        /// Gets and sets the NetworkInterfaceDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NetworkInterfaceDescription")]
        public String NetworkInterfaceDescription
        {
            get { return this.networkInterfaceDescriptionField ; }
            set { this.networkInterfaceDescriptionField= value; }
        }



        /// <summary>
        /// Sets the NetworkInterfaceDescription property
        /// </summary>
        /// <param name="networkInterfaceDescription">NetworkInterfaceDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNetworkInterfaceDescription(String networkInterfaceDescription)
        {
            this.networkInterfaceDescriptionField = networkInterfaceDescription;
            return this;
        }



        /// <summary>
        /// Checks if NetworkInterfaceDescription property is set
        /// </summary>
        /// <returns>true if NetworkInterfaceDescription property is set</returns>
        public Boolean IsSetNetworkInterfaceDescription()
        {
            return  this.networkInterfaceDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the NotebookDisplayTechnology property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NotebookDisplayTechnology")]
        public String NotebookDisplayTechnology
        {
            get { return this.notebookDisplayTechnologyField ; }
            set { this.notebookDisplayTechnologyField= value; }
        }



        /// <summary>
        /// Sets the NotebookDisplayTechnology property
        /// </summary>
        /// <param name="notebookDisplayTechnology">NotebookDisplayTechnology property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNotebookDisplayTechnology(String notebookDisplayTechnology)
        {
            this.notebookDisplayTechnologyField = notebookDisplayTechnology;
            return this;
        }



        /// <summary>
        /// Checks if NotebookDisplayTechnology property is set
        /// </summary>
        /// <returns>true if NotebookDisplayTechnology property is set</returns>
        public Boolean IsSetNotebookDisplayTechnology()
        {
            return  this.notebookDisplayTechnologyField != null;

        }


        /// <summary>
        /// Gets and sets the NotebookPointingDeviceDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NotebookPointingDeviceDescription")]
        public String NotebookPointingDeviceDescription
        {
            get { return this.notebookPointingDeviceDescriptionField ; }
            set { this.notebookPointingDeviceDescriptionField= value; }
        }



        /// <summary>
        /// Sets the NotebookPointingDeviceDescription property
        /// </summary>
        /// <param name="notebookPointingDeviceDescription">NotebookPointingDeviceDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNotebookPointingDeviceDescription(String notebookPointingDeviceDescription)
        {
            this.notebookPointingDeviceDescriptionField = notebookPointingDeviceDescription;
            return this;
        }



        /// <summary>
        /// Checks if NotebookPointingDeviceDescription property is set
        /// </summary>
        /// <returns>true if NotebookPointingDeviceDescription property is set</returns>
        public Boolean IsSetNotebookPointingDeviceDescription()
        {
            return  this.notebookPointingDeviceDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfDiscs property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfDiscs")]
        public Decimal NumberOfDiscs
        {
            get { return this.numberOfDiscsField.GetValueOrDefault() ; }
            set { this.numberOfDiscsField= value; }
        }



        /// <summary>
        /// Sets the NumberOfDiscs property
        /// </summary>
        /// <param name="numberOfDiscs">NumberOfDiscs property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfDiscs(Decimal numberOfDiscs)
        {
            this.numberOfDiscsField = numberOfDiscs;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfDiscs property is set
        /// </summary>
        /// <returns>true if NumberOfDiscs property is set</returns>
        public Boolean IsSetNumberOfDiscs()
        {
            return  this.numberOfDiscsField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfIssues property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfIssues")]
        public Decimal NumberOfIssues
        {
            get { return this.numberOfIssuesField.GetValueOrDefault() ; }
            set { this.numberOfIssuesField= value; }
        }



        /// <summary>
        /// Sets the NumberOfIssues property
        /// </summary>
        /// <param name="numberOfIssues">NumberOfIssues property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfIssues(Decimal numberOfIssues)
        {
            this.numberOfIssuesField = numberOfIssues;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfIssues property is set
        /// </summary>
        /// <returns>true if NumberOfIssues property is set</returns>
        public Boolean IsSetNumberOfIssues()
        {
            return  this.numberOfIssuesField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfItems property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfItems")]
        public Decimal NumberOfItems
        {
            get { return this.numberOfItemsField.GetValueOrDefault() ; }
            set { this.numberOfItemsField= value; }
        }



        /// <summary>
        /// Sets the NumberOfItems property
        /// </summary>
        /// <param name="numberOfItems">NumberOfItems property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfItems(Decimal numberOfItems)
        {
            this.numberOfItemsField = numberOfItems;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfItems property is set
        /// </summary>
        /// <returns>true if NumberOfItems property is set</returns>
        public Boolean IsSetNumberOfItems()
        {
            return  this.numberOfItemsField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfKeys property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfKeys")]
        public Decimal NumberOfKeys
        {
            get { return this.numberOfKeysField.GetValueOrDefault() ; }
            set { this.numberOfKeysField= value; }
        }



        /// <summary>
        /// Sets the NumberOfKeys property
        /// </summary>
        /// <param name="numberOfKeys">NumberOfKeys property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfKeys(Decimal numberOfKeys)
        {
            this.numberOfKeysField = numberOfKeys;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfKeys property is set
        /// </summary>
        /// <returns>true if NumberOfKeys property is set</returns>
        public Boolean IsSetNumberOfKeys()
        {
            return  this.numberOfKeysField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfPages property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfPages")]
        public Decimal NumberOfPages
        {
            get { return this.numberOfPagesField.GetValueOrDefault() ; }
            set { this.numberOfPagesField= value; }
        }



        /// <summary>
        /// Sets the NumberOfPages property
        /// </summary>
        /// <param name="numberOfPages">NumberOfPages property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfPages(Decimal numberOfPages)
        {
            this.numberOfPagesField = numberOfPages;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfPages property is set
        /// </summary>
        /// <returns>true if NumberOfPages property is set</returns>
        public Boolean IsSetNumberOfPages()
        {
            return  this.numberOfPagesField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfPearls property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfPearls")]
        public Decimal NumberOfPearls
        {
            get { return this.numberOfPearlsField.GetValueOrDefault() ; }
            set { this.numberOfPearlsField= value; }
        }



        /// <summary>
        /// Sets the NumberOfPearls property
        /// </summary>
        /// <param name="numberOfPearls">NumberOfPearls property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfPearls(Decimal numberOfPearls)
        {
            this.numberOfPearlsField = numberOfPearls;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfPearls property is set
        /// </summary>
        /// <returns>true if NumberOfPearls property is set</returns>
        public Boolean IsSetNumberOfPearls()
        {
            return  this.numberOfPearlsField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfRapidFireShots property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfRapidFireShots")]
        public Decimal NumberOfRapidFireShots
        {
            get { return this.numberOfRapidFireShotsField.GetValueOrDefault() ; }
            set { this.numberOfRapidFireShotsField= value; }
        }



        /// <summary>
        /// Sets the NumberOfRapidFireShots property
        /// </summary>
        /// <param name="numberOfRapidFireShots">NumberOfRapidFireShots property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfRapidFireShots(Decimal numberOfRapidFireShots)
        {
            this.numberOfRapidFireShotsField = numberOfRapidFireShots;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfRapidFireShots property is set
        /// </summary>
        /// <returns>true if NumberOfRapidFireShots property is set</returns>
        public Boolean IsSetNumberOfRapidFireShots()
        {
            return  this.numberOfRapidFireShotsField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfStones property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfStones")]
        public Decimal NumberOfStones
        {
            get { return this.numberOfStonesField.GetValueOrDefault() ; }
            set { this.numberOfStonesField= value; }
        }



        /// <summary>
        /// Sets the NumberOfStones property
        /// </summary>
        /// <param name="numberOfStones">NumberOfStones property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfStones(Decimal numberOfStones)
        {
            this.numberOfStonesField = numberOfStones;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfStones property is set
        /// </summary>
        /// <returns>true if NumberOfStones property is set</returns>
        public Boolean IsSetNumberOfStones()
        {
            return  this.numberOfStonesField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfStrings property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfStrings")]
        public Decimal NumberOfStrings
        {
            get { return this.numberOfStringsField.GetValueOrDefault() ; }
            set { this.numberOfStringsField= value; }
        }



        /// <summary>
        /// Sets the NumberOfStrings property
        /// </summary>
        /// <param name="numberOfStrings">NumberOfStrings property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfStrings(Decimal numberOfStrings)
        {
            this.numberOfStringsField = numberOfStrings;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfStrings property is set
        /// </summary>
        /// <returns>true if NumberOfStrings property is set</returns>
        public Boolean IsSetNumberOfStrings()
        {
            return  this.numberOfStringsField != null;

        }


        /// <summary>
        /// Gets and sets the NumberOfTracks property.
        /// </summary>
        [XmlElementAttribute(ElementName = "NumberOfTracks")]
        public Decimal NumberOfTracks
        {
            get { return this.numberOfTracksField.GetValueOrDefault() ; }
            set { this.numberOfTracksField= value; }
        }



        /// <summary>
        /// Sets the NumberOfTracks property
        /// </summary>
        /// <param name="numberOfTracks">NumberOfTracks property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithNumberOfTracks(Decimal numberOfTracks)
        {
            this.numberOfTracksField = numberOfTracks;
            return this;
        }



        /// <summary>
        /// Checks if NumberOfTracks property is set
        /// </summary>
        /// <returns>true if NumberOfTracks property is set</returns>
        public Boolean IsSetNumberOfTracks()
        {
            return  this.numberOfTracksField != null;

        }


        /// <summary>
        /// Gets and sets the OpticalZoom property.
        /// </summary>
        [XmlElementAttribute(ElementName = "OpticalZoom")]
        public DecimalWithUnits OpticalZoom
        {
            get { return this.opticalZoomField ; }
            set { this.opticalZoomField = value; }
        }



        /// <summary>
        /// Sets the OpticalZoom property
        /// </summary>
        /// <param name="opticalZoom">OpticalZoom property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithOpticalZoom(DecimalWithUnits opticalZoom)
        {
            this.opticalZoomField = opticalZoom;
            return this;
        }



        /// <summary>
        /// Checks if OpticalZoom property is set
        /// </summary>
        /// <returns>true if OpticalZoom property is set</returns>
        public Boolean IsSetOpticalZoom()
        {
            return this.opticalZoomField != null;
        }




        /// <summary>
        /// Gets and sets the OriginalReleaseDate property.
        /// </summary>
        [XmlElementAttribute(ElementName = "OriginalReleaseDate")]
        public String OriginalReleaseDate
        {
            get { return this.originalReleaseDateField ; }
            set { this.originalReleaseDateField= value; }
        }



        /// <summary>
        /// Sets the OriginalReleaseDate property
        /// </summary>
        /// <param name="originalReleaseDate">OriginalReleaseDate property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithOriginalReleaseDate(String originalReleaseDate)
        {
            this.originalReleaseDateField = originalReleaseDate;
            return this;
        }



        /// <summary>
        /// Checks if OriginalReleaseDate property is set
        /// </summary>
        /// <returns>true if OriginalReleaseDate property is set</returns>
        public Boolean IsSetOriginalReleaseDate()
        {
            return  this.originalReleaseDateField != null;

        }


        /// <summary>
        /// Gets and sets the OutputWattage property.
        /// </summary>
        [XmlElementAttribute(ElementName = "OutputWattage")]
        public Decimal OutputWattage
        {
            get { return this.outputWattageField.GetValueOrDefault() ; }
            set { this.outputWattageField= value; }
        }



        /// <summary>
        /// Sets the OutputWattage property
        /// </summary>
        /// <param name="outputWattage">OutputWattage property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithOutputWattage(Decimal outputWattage)
        {
            this.outputWattageField = outputWattage;
            return this;
        }



        /// <summary>
        /// Checks if OutputWattage property is set
        /// </summary>
        /// <returns>true if OutputWattage property is set</returns>
        public Boolean IsSetOutputWattage()
        {
            return  this.outputWattageField != null;

        }


        /// <summary>
        /// Gets and sets the PackageDimensions property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PackageDimensions")]
        public PackageDimensions PackageDimensions
        {
            get { return this.packageDimensionsField ; }
            set { this.packageDimensionsField = value; }
        }



        /// <summary>
        /// Sets the PackageDimensions property
        /// </summary>
        /// <param name="packageDimensions">PackageDimensions property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPackageDimensions(PackageDimensions packageDimensions)
        {
            this.packageDimensionsField = packageDimensions;
            return this;
        }



        /// <summary>
        /// Checks if PackageDimensions property is set
        /// </summary>
        /// <returns>true if PackageDimensions property is set</returns>
        public Boolean IsSetPackageDimensions()
        {
            return this.packageDimensionsField != null;
        }




        /// <summary>
        /// Gets and sets the PearlLustre property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PearlLustre")]
        public String PearlLustre
        {
            get { return this.pearlLustreField ; }
            set { this.pearlLustreField= value; }
        }



        /// <summary>
        /// Sets the PearlLustre property
        /// </summary>
        /// <param name="pearlLustre">PearlLustre property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPearlLustre(String pearlLustre)
        {
            this.pearlLustreField = pearlLustre;
            return this;
        }



        /// <summary>
        /// Checks if PearlLustre property is set
        /// </summary>
        /// <returns>true if PearlLustre property is set</returns>
        public Boolean IsSetPearlLustre()
        {
            return  this.pearlLustreField != null;

        }


        /// <summary>
        /// Gets and sets the PearlMinimumColor property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PearlMinimumColor")]
        public String PearlMinimumColor
        {
            get { return this.pearlMinimumColorField ; }
            set { this.pearlMinimumColorField= value; }
        }



        /// <summary>
        /// Sets the PearlMinimumColor property
        /// </summary>
        /// <param name="pearlMinimumColor">PearlMinimumColor property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPearlMinimumColor(String pearlMinimumColor)
        {
            this.pearlMinimumColorField = pearlMinimumColor;
            return this;
        }



        /// <summary>
        /// Checks if PearlMinimumColor property is set
        /// </summary>
        /// <returns>true if PearlMinimumColor property is set</returns>
        public Boolean IsSetPearlMinimumColor()
        {
            return  this.pearlMinimumColorField != null;

        }


        /// <summary>
        /// Gets and sets the PearlShape property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PearlShape")]
        public String PearlShape
        {
            get { return this.pearlShapeField ; }
            set { this.pearlShapeField= value; }
        }



        /// <summary>
        /// Sets the PearlShape property
        /// </summary>
        /// <param name="pearlShape">PearlShape property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPearlShape(String pearlShape)
        {
            this.pearlShapeField = pearlShape;
            return this;
        }



        /// <summary>
        /// Checks if PearlShape property is set
        /// </summary>
        /// <returns>true if PearlShape property is set</returns>
        public Boolean IsSetPearlShape()
        {
            return  this.pearlShapeField != null;

        }


        /// <summary>
        /// Gets and sets the PearlStringingMethod property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PearlStringingMethod")]
        public String PearlStringingMethod
        {
            get { return this.pearlStringingMethodField ; }
            set { this.pearlStringingMethodField= value; }
        }



        /// <summary>
        /// Sets the PearlStringingMethod property
        /// </summary>
        /// <param name="pearlStringingMethod">PearlStringingMethod property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPearlStringingMethod(String pearlStringingMethod)
        {
            this.pearlStringingMethodField = pearlStringingMethod;
            return this;
        }



        /// <summary>
        /// Checks if PearlStringingMethod property is set
        /// </summary>
        /// <returns>true if PearlStringingMethod property is set</returns>
        public Boolean IsSetPearlStringingMethod()
        {
            return  this.pearlStringingMethodField != null;

        }


        /// <summary>
        /// Gets and sets the PearlSurfaceBlemishes property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PearlSurfaceBlemishes")]
        public String PearlSurfaceBlemishes
        {
            get { return this.pearlSurfaceBlemishesField ; }
            set { this.pearlSurfaceBlemishesField= value; }
        }



        /// <summary>
        /// Sets the PearlSurfaceBlemishes property
        /// </summary>
        /// <param name="pearlSurfaceBlemishes">PearlSurfaceBlemishes property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPearlSurfaceBlemishes(String pearlSurfaceBlemishes)
        {
            this.pearlSurfaceBlemishesField = pearlSurfaceBlemishes;
            return this;
        }



        /// <summary>
        /// Checks if PearlSurfaceBlemishes property is set
        /// </summary>
        /// <returns>true if PearlSurfaceBlemishes property is set</returns>
        public Boolean IsSetPearlSurfaceBlemishes()
        {
            return  this.pearlSurfaceBlemishesField != null;

        }


        /// <summary>
        /// Gets and sets the PearlType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PearlType")]
        public String PearlType
        {
            get { return this.pearlTypeField ; }
            set { this.pearlTypeField= value; }
        }



        /// <summary>
        /// Sets the PearlType property
        /// </summary>
        /// <param name="pearlType">PearlType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPearlType(String pearlType)
        {
            this.pearlTypeField = pearlType;
            return this;
        }



        /// <summary>
        /// Checks if PearlType property is set
        /// </summary>
        /// <returns>true if PearlType property is set</returns>
        public Boolean IsSetPearlType()
        {
            return  this.pearlTypeField != null;

        }


        /// <summary>
        /// Gets and sets the PearlUniformity property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PearlUniformity")]
        public String PearlUniformity
        {
            get { return this.pearlUniformityField ; }
            set { this.pearlUniformityField= value; }
        }



        /// <summary>
        /// Sets the PearlUniformity property
        /// </summary>
        /// <param name="pearlUniformity">PearlUniformity property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPearlUniformity(String pearlUniformity)
        {
            this.pearlUniformityField = pearlUniformity;
            return this;
        }



        /// <summary>
        /// Checks if PearlUniformity property is set
        /// </summary>
        /// <returns>true if PearlUniformity property is set</returns>
        public Boolean IsSetPearlUniformity()
        {
            return  this.pearlUniformityField != null;

        }


        /// <summary>
        /// Gets and sets the PhoneNumber property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PhoneNumber")]
        public String PhoneNumber
        {
            get { return this.phoneNumberField ; }
            set { this.phoneNumberField= value; }
        }



        /// <summary>
        /// Sets the PhoneNumber property
        /// </summary>
        /// <param name="phoneNumber">PhoneNumber property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPhoneNumber(String phoneNumber)
        {
            this.phoneNumberField = phoneNumber;
            return this;
        }



        /// <summary>
        /// Checks if PhoneNumber property is set
        /// </summary>
        /// <returns>true if PhoneNumber property is set</returns>
        public Boolean IsSetPhoneNumber()
        {
            return  this.phoneNumberField != null;

        }


        /// <summary>
        /// Gets and sets the PhotoFlashType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PhotoFlashType")]
        public List<String> PhotoFlashType
        {
            get
            {
                if (this.photoFlashTypeField == null)
                {
                    this.photoFlashTypeField = new List<String>();
                }
                return this.photoFlashTypeField;
            }
            set { this.photoFlashTypeField =  value; }
        }



        /// <summary>
        /// Sets the PhotoFlashType property
        /// </summary>
        /// <param name="list">PhotoFlashType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPhotoFlashType(params String[] list)
        {
            foreach (String item in list)
            {
                PhotoFlashType.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of PhotoFlashType property is set
        /// </summary>
        /// <returns>true if PhotoFlashType property is set</returns>
        public Boolean IsSetPhotoFlashType()
        {
            return (PhotoFlashType.Count > 0);
        }




        /// <summary>
        /// Gets and sets the PictureFormat property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PictureFormat")]
        public List<String> PictureFormat
        {
            get
            {
                if (this.pictureFormatField == null)
                {
                    this.pictureFormatField = new List<String>();
                }
                return this.pictureFormatField;
            }
            set { this.pictureFormatField =  value; }
        }



        /// <summary>
        /// Sets the PictureFormat property
        /// </summary>
        /// <param name="list">PictureFormat property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPictureFormat(params String[] list)
        {
            foreach (String item in list)
            {
                PictureFormat.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of PictureFormat property is set
        /// </summary>
        /// <returns>true if PictureFormat property is set</returns>
        public Boolean IsSetPictureFormat()
        {
            return (PictureFormat.Count > 0);
        }




        /// <summary>
        /// Gets and sets the Platform property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Platform")]
        public List<String> Platform
        {
            get
            {
                if (this.platformField == null)
                {
                    this.platformField = new List<String>();
                }
                return this.platformField;
            }
            set { this.platformField =  value; }
        }



        /// <summary>
        /// Sets the Platform property
        /// </summary>
        /// <param name="list">Platform property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPlatform(params String[] list)
        {
            foreach (String item in list)
            {
                Platform.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of Platform property is set
        /// </summary>
        /// <returns>true if Platform property is set</returns>
        public Boolean IsSetPlatform()
        {
            return (Platform.Count > 0);
        }




        /// <summary>
        /// Gets and sets the PriceRating property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PriceRating")]
        public Decimal PriceRating
        {
            get { return this.priceRatingField.GetValueOrDefault() ; }
            set { this.priceRatingField= value; }
        }



        /// <summary>
        /// Sets the PriceRating property
        /// </summary>
        /// <param name="priceRating">PriceRating property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPriceRating(Decimal priceRating)
        {
            this.priceRatingField = priceRating;
            return this;
        }



        /// <summary>
        /// Checks if PriceRating property is set
        /// </summary>
        /// <returns>true if PriceRating property is set</returns>
        public Boolean IsSetPriceRating()
        {
            return  this.priceRatingField != null;

        }


        /// <summary>
        /// Gets and sets the ProcessorCount property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ProcessorCount")]
        public Decimal ProcessorCount
        {
            get { return this.processorCountField.GetValueOrDefault() ; }
            set { this.processorCountField= value; }
        }



        /// <summary>
        /// Sets the ProcessorCount property
        /// </summary>
        /// <param name="processorCount">ProcessorCount property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithProcessorCount(Decimal processorCount)
        {
            this.processorCountField = processorCount;
            return this;
        }



        /// <summary>
        /// Checks if ProcessorCount property is set
        /// </summary>
        /// <returns>true if ProcessorCount property is set</returns>
        public Boolean IsSetProcessorCount()
        {
            return  this.processorCountField != null;

        }


        /// <summary>
        /// Gets and sets the ProductGroup property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ProductGroup")]
        public String ProductGroup
        {
            get { return this.productGroupField ; }
            set { this.productGroupField= value; }
        }



        /// <summary>
        /// Sets the ProductGroup property
        /// </summary>
        /// <param name="productGroup">ProductGroup property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithProductGroup(String productGroup)
        {
            this.productGroupField = productGroup;
            return this;
        }



        /// <summary>
        /// Checks if ProductGroup property is set
        /// </summary>
        /// <returns>true if ProductGroup property is set</returns>
        public Boolean IsSetProductGroup()
        {
            return  this.productGroupField != null;

        }


        /// <summary>
        /// Gets and sets the PromotionalTag property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PromotionalTag")]
        public String PromotionalTag
        {
            get { return this.promotionalTagField ; }
            set { this.promotionalTagField= value; }
        }



        /// <summary>
        /// Sets the PromotionalTag property
        /// </summary>
        /// <param name="promotionalTag">PromotionalTag property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPromotionalTag(String promotionalTag)
        {
            this.promotionalTagField = promotionalTag;
            return this;
        }



        /// <summary>
        /// Checks if PromotionalTag property is set
        /// </summary>
        /// <returns>true if PromotionalTag property is set</returns>
        public Boolean IsSetPromotionalTag()
        {
            return  this.promotionalTagField != null;

        }


        /// <summary>
        /// Gets and sets the POBoxShippingExcluded property.
        /// </summary>
        [XmlElementAttribute(ElementName = "POBoxShippingExcluded")]
        public String POBoxShippingExcluded
        {
            get { return this.POBoxShippingExcludedField ; }
            set { this.POBoxShippingExcludedField= value; }
        }



        /// <summary>
        /// Sets the POBoxShippingExcluded property
        /// </summary>
        /// <param name="POBoxShippingExcluded">POBoxShippingExcluded property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPOBoxShippingExcluded(String POBoxShippingExcluded)
        {
            this.POBoxShippingExcludedField = POBoxShippingExcluded;
            return this;
        }



        /// <summary>
        /// Checks if POBoxShippingExcluded property is set
        /// </summary>
        /// <returns>true if POBoxShippingExcluded property is set</returns>
        public Boolean IsSetPOBoxShippingExcluded()
        {
            return  this.POBoxShippingExcludedField != null;

        }


        /// <summary>
        /// Gets and sets the PublicationDate property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PublicationDate")]
        public String PublicationDate
        {
            get { return this.publicationDateField ; }
            set { this.publicationDateField= value; }
        }



        /// <summary>
        /// Sets the PublicationDate property
        /// </summary>
        /// <param name="publicationDate">PublicationDate property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPublicationDate(String publicationDate)
        {
            this.publicationDateField = publicationDate;
            return this;
        }



        /// <summary>
        /// Checks if PublicationDate property is set
        /// </summary>
        /// <returns>true if PublicationDate property is set</returns>
        public Boolean IsSetPublicationDate()
        {
            return  this.publicationDateField != null;

        }


        /// <summary>
        /// Gets and sets the Publisher property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Publisher")]
        public String Publisher
        {
            get { return this.publisherField ; }
            set { this.publisherField= value; }
        }



        /// <summary>
        /// Sets the Publisher property
        /// </summary>
        /// <param name="publisher">Publisher property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPublisher(String publisher)
        {
            this.publisherField = publisher;
            return this;
        }



        /// <summary>
        /// Checks if Publisher property is set
        /// </summary>
        /// <returns>true if Publisher property is set</returns>
        public Boolean IsSetPublisher()
        {
            return  this.publisherField != null;

        }


        /// <summary>
        /// Gets and sets the PurchasingChannel property.
        /// </summary>
        [XmlElementAttribute(ElementName = "PurchasingChannel")]
        public List<String> PurchasingChannel
        {
            get
            {
                if (this.purchasingChannelField == null)
                {
                    this.purchasingChannelField = new List<String>();
                }
                return this.purchasingChannelField;
            }
            set { this.purchasingChannelField =  value; }
        }



        /// <summary>
        /// Sets the PurchasingChannel property
        /// </summary>
        /// <param name="list">PurchasingChannel property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithPurchasingChannel(params String[] list)
        {
            foreach (String item in list)
            {
                PurchasingChannel.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of PurchasingChannel property is set
        /// </summary>
        /// <returns>true if PurchasingChannel property is set</returns>
        public Boolean IsSetPurchasingChannel()
        {
            return (PurchasingChannel.Count > 0);
        }




        /// <summary>
        /// Gets and sets the ReadingLevel property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ReadingLevel")]
        public String ReadingLevel
        {
            get { return this.readingLevelField ; }
            set { this.readingLevelField= value; }
        }



        /// <summary>
        /// Sets the ReadingLevel property
        /// </summary>
        /// <param name="readingLevel">ReadingLevel property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithReadingLevel(String readingLevel)
        {
            this.readingLevelField = readingLevel;
            return this;
        }



        /// <summary>
        /// Checks if ReadingLevel property is set
        /// </summary>
        /// <returns>true if ReadingLevel property is set</returns>
        public Boolean IsSetReadingLevel()
        {
            return  this.readingLevelField != null;

        }


        /// <summary>
        /// Gets and sets the RecorderTrackCount property.
        /// </summary>
        [XmlElementAttribute(ElementName = "RecorderTrackCount")]
        public Decimal RecorderTrackCount
        {
            get { return this.recorderTrackCountField.GetValueOrDefault() ; }
            set { this.recorderTrackCountField= value; }
        }



        /// <summary>
        /// Sets the RecorderTrackCount property
        /// </summary>
        /// <param name="recorderTrackCount">RecorderTrackCount property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithRecorderTrackCount(Decimal recorderTrackCount)
        {
            this.recorderTrackCountField = recorderTrackCount;
            return this;
        }



        /// <summary>
        /// Checks if RecorderTrackCount property is set
        /// </summary>
        /// <returns>true if RecorderTrackCount property is set</returns>
        public Boolean IsSetRecorderTrackCount()
        {
            return  this.recorderTrackCountField != null;

        }


        /// <summary>
        /// Gets and sets the RegionCode property.
        /// </summary>
        [XmlElementAttribute(ElementName = "RegionCode")]
        public String RegionCode
        {
            get { return this.regionCodeField ; }
            set { this.regionCodeField= value; }
        }



        /// <summary>
        /// Sets the RegionCode property
        /// </summary>
        /// <param name="regionCode">RegionCode property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithRegionCode(String regionCode)
        {
            this.regionCodeField = regionCode;
            return this;
        }



        /// <summary>
        /// Checks if RegionCode property is set
        /// </summary>
        /// <returns>true if RegionCode property is set</returns>
        public Boolean IsSetRegionCode()
        {
            return  this.regionCodeField != null;

        }


        /// <summary>
        /// Gets and sets the RegionOfOrigin property.
        /// </summary>
        [XmlElementAttribute(ElementName = "RegionOfOrigin")]
        public String RegionOfOrigin
        {
            get { return this.regionOfOriginField ; }
            set { this.regionOfOriginField= value; }
        }



        /// <summary>
        /// Sets the RegionOfOrigin property
        /// </summary>
        /// <param name="regionOfOrigin">RegionOfOrigin property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithRegionOfOrigin(String regionOfOrigin)
        {
            this.regionOfOriginField = regionOfOrigin;
            return this;
        }



        /// <summary>
        /// Checks if RegionOfOrigin property is set
        /// </summary>
        /// <returns>true if RegionOfOrigin property is set</returns>
        public Boolean IsSetRegionOfOrigin()
        {
            return  this.regionOfOriginField != null;

        }


        /// <summary>
        /// Gets and sets the ReleaseDate property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ReleaseDate")]
        public String ReleaseDate
        {
            get { return this.releaseDateField ; }
            set { this.releaseDateField= value; }
        }



        /// <summary>
        /// Sets the ReleaseDate property
        /// </summary>
        /// <param name="releaseDate">ReleaseDate property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithReleaseDate(String releaseDate)
        {
            this.releaseDateField = releaseDate;
            return this;
        }



        /// <summary>
        /// Checks if ReleaseDate property is set
        /// </summary>
        /// <returns>true if ReleaseDate property is set</returns>
        public Boolean IsSetReleaseDate()
        {
            return  this.releaseDateField != null;

        }


        /// <summary>
        /// Gets and sets the ReturnMethod property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ReturnMethod")]
        public List<String> ReturnMethod
        {
            get
            {
                if (this.returnMethodField == null)
                {
                    this.returnMethodField = new List<String>();
                }
                return this.returnMethodField;
            }
            set { this.returnMethodField =  value; }
        }



        /// <summary>
        /// Sets the ReturnMethod property
        /// </summary>
        /// <param name="list">ReturnMethod property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithReturnMethod(params String[] list)
        {
            foreach (String item in list)
            {
                ReturnMethod.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of ReturnMethod property is set
        /// </summary>
        /// <returns>true if ReturnMethod property is set</returns>
        public Boolean IsSetReturnMethod()
        {
            return (ReturnMethod.Count > 0);
        }




        /// <summary>
        /// Gets and sets the RemovableMemory property.
        /// </summary>
        [XmlElementAttribute(ElementName = "RemovableMemory")]
        public String RemovableMemory
        {
            get { return this.removableMemoryField ; }
            set { this.removableMemoryField= value; }
        }



        /// <summary>
        /// Sets the RemovableMemory property
        /// </summary>
        /// <param name="removableMemory">RemovableMemory property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithRemovableMemory(String removableMemory)
        {
            this.removableMemoryField = removableMemory;
            return this;
        }



        /// <summary>
        /// Checks if RemovableMemory property is set
        /// </summary>
        /// <returns>true if RemovableMemory property is set</returns>
        public Boolean IsSetRemovableMemory()
        {
            return  this.removableMemoryField != null;

        }


        /// <summary>
        /// Gets and sets the ResolutionModes property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ResolutionModes")]
        public String ResolutionModes
        {
            get { return this.resolutionModesField ; }
            set { this.resolutionModesField= value; }
        }



        /// <summary>
        /// Sets the ResolutionModes property
        /// </summary>
        /// <param name="resolutionModes">ResolutionModes property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithResolutionModes(String resolutionModes)
        {
            this.resolutionModesField = resolutionModes;
            return this;
        }



        /// <summary>
        /// Checks if ResolutionModes property is set
        /// </summary>
        /// <returns>true if ResolutionModes property is set</returns>
        public Boolean IsSetResolutionModes()
        {
            return  this.resolutionModesField != null;

        }


        /// <summary>
        /// Gets and sets the ReturnPolicy property.
        /// </summary>
        [XmlElementAttribute(ElementName = "ReturnPolicy")]
        public String ReturnPolicy
        {
            get { return this.returnPolicyField ; }
            set { this.returnPolicyField= value; }
        }



        /// <summary>
        /// Sets the ReturnPolicy property
        /// </summary>
        /// <param name="returnPolicy">ReturnPolicy property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithReturnPolicy(String returnPolicy)
        {
            this.returnPolicyField = returnPolicy;
            return this;
        }



        /// <summary>
        /// Checks if ReturnPolicy property is set
        /// </summary>
        /// <returns>true if ReturnPolicy property is set</returns>
        public Boolean IsSetReturnPolicy()
        {
            return  this.returnPolicyField != null;

        }


        /// <summary>
        /// Gets and sets the RingSize property.
        /// </summary>
        [XmlElementAttribute(ElementName = "RingSize")]
        public String RingSize
        {
            get { return this.ringSizeField ; }
            set { this.ringSizeField= value; }
        }



        /// <summary>
        /// Sets the RingSize property
        /// </summary>
        /// <param name="ringSize">RingSize property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithRingSize(String ringSize)
        {
            this.ringSizeField = ringSize;
            return this;
        }



        /// <summary>
        /// Checks if RingSize property is set
        /// </summary>
        /// <returns>true if RingSize property is set</returns>
        public Boolean IsSetRingSize()
        {
            return  this.ringSizeField != null;

        }


        /// <summary>
        /// Gets and sets the SafetyWarning property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SafetyWarning")]
        public String SafetyWarning
        {
            get { return this.safetyWarningField ; }
            set { this.safetyWarningField= value; }
        }



        /// <summary>
        /// Sets the SafetyWarning property
        /// </summary>
        /// <param name="safetyWarning">SafetyWarning property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSafetyWarning(String safetyWarning)
        {
            this.safetyWarningField = safetyWarning;
            return this;
        }



        /// <summary>
        /// Checks if SafetyWarning property is set
        /// </summary>
        /// <returns>true if SafetyWarning property is set</returns>
        public Boolean IsSetSafetyWarning()
        {
            return  this.safetyWarningField != null;

        }


        /// <summary>
        /// Gets and sets the SalesRestriction property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SalesRestriction")]
        public String SalesRestriction
        {
            get { return this.salesRestrictionField ; }
            set { this.salesRestrictionField= value; }
        }



        /// <summary>
        /// Sets the SalesRestriction property
        /// </summary>
        /// <param name="salesRestriction">SalesRestriction property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSalesRestriction(String salesRestriction)
        {
            this.salesRestrictionField = salesRestriction;
            return this;
        }



        /// <summary>
        /// Checks if SalesRestriction property is set
        /// </summary>
        /// <returns>true if SalesRestriction property is set</returns>
        public Boolean IsSetSalesRestriction()
        {
            return  this.salesRestrictionField != null;

        }


        /// <summary>
        /// Gets and sets the SecondaryCacheSize property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SecondaryCacheSize")]
        public NonNegativeIntegerWithUnits SecondaryCacheSize
        {
            get { return this.secondaryCacheSizeField ; }
            set { this.secondaryCacheSizeField = value; }
        }



        /// <summary>
        /// Sets the SecondaryCacheSize property
        /// </summary>
        /// <param name="secondaryCacheSize">SecondaryCacheSize property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSecondaryCacheSize(NonNegativeIntegerWithUnits secondaryCacheSize)
        {
            this.secondaryCacheSizeField = secondaryCacheSize;
            return this;
        }



        /// <summary>
        /// Checks if SecondaryCacheSize property is set
        /// </summary>
        /// <returns>true if SecondaryCacheSize property is set</returns>
        public Boolean IsSetSecondaryCacheSize()
        {
            return this.secondaryCacheSizeField != null;
        }




        /// <summary>
        /// Gets and sets the SettingType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SettingType")]
        public String SettingType
        {
            get { return this.settingTypeField ; }
            set { this.settingTypeField= value; }
        }



        /// <summary>
        /// Sets the SettingType property
        /// </summary>
        /// <param name="settingType">SettingType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSettingType(String settingType)
        {
            this.settingTypeField = settingType;
            return this;
        }



        /// <summary>
        /// Checks if SettingType property is set
        /// </summary>
        /// <returns>true if SettingType property is set</returns>
        public Boolean IsSetSettingType()
        {
            return  this.settingTypeField != null;

        }


        /// <summary>
        /// Gets and sets the Size property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Size")]
        public String Size
        {
            get { return this.sizeField ; }
            set { this.sizeField= value; }
        }



        /// <summary>
        /// Sets the Size property
        /// </summary>
        /// <param name="size">Size property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSize(String size)
        {
            this.sizeField = size;
            return this;
        }



        /// <summary>
        /// Checks if Size property is set
        /// </summary>
        /// <returns>true if Size property is set</returns>
        public Boolean IsSetSize()
        {
            return  this.sizeField != null;

        }


        /// <summary>
        /// Gets and sets the SKU property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SKU")]
        public String SKU
        {
            get { return this.SKUField ; }
            set { this.SKUField= value; }
        }



        /// <summary>
        /// Sets the SKU property
        /// </summary>
        /// <param name="SKU">SKU property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSKU(String SKU)
        {
            this.SKUField = SKU;
            return this;
        }



        /// <summary>
        /// Checks if SKU property is set
        /// </summary>
        /// <returns>true if SKU property is set</returns>
        public Boolean IsSetSKU()
        {
            return  this.SKUField != null;

        }


        /// <summary>
        /// Gets and sets the SoldInStores property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SoldInStores")]
        public String SoldInStores
        {
            get { return this.soldInStoresField ; }
            set { this.soldInStoresField= value; }
        }



        /// <summary>
        /// Sets the SoldInStores property
        /// </summary>
        /// <param name="soldInStores">SoldInStores property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSoldInStores(String soldInStores)
        {
            this.soldInStoresField = soldInStores;
            return this;
        }



        /// <summary>
        /// Checks if SoldInStores property is set
        /// </summary>
        /// <returns>true if SoldInStores property is set</returns>
        public Boolean IsSetSoldInStores()
        {
            return  this.soldInStoresField != null;

        }


        /// <summary>
        /// Gets and sets the SizePerPearl property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SizePerPearl")]
        public String SizePerPearl
        {
            get { return this.sizePerPearlField ; }
            set { this.sizePerPearlField= value; }
        }



        /// <summary>
        /// Sets the SizePerPearl property
        /// </summary>
        /// <param name="sizePerPearl">SizePerPearl property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSizePerPearl(String sizePerPearl)
        {
            this.sizePerPearlField = sizePerPearl;
            return this;
        }



        /// <summary>
        /// Checks if SizePerPearl property is set
        /// </summary>
        /// <returns>true if SizePerPearl property is set</returns>
        public Boolean IsSetSizePerPearl()
        {
            return  this.sizePerPearlField != null;

        }


        /// <summary>
        /// Gets and sets the SkillLevel property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SkillLevel")]
        public String SkillLevel
        {
            get { return this.skillLevelField ; }
            set { this.skillLevelField= value; }
        }



        /// <summary>
        /// Sets the SkillLevel property
        /// </summary>
        /// <param name="skillLevel">SkillLevel property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSkillLevel(String skillLevel)
        {
            this.skillLevelField = skillLevel;
            return this;
        }



        /// <summary>
        /// Checks if SkillLevel property is set
        /// </summary>
        /// <returns>true if SkillLevel property is set</returns>
        public Boolean IsSetSkillLevel()
        {
            return  this.skillLevelField != null;

        }


        /// <summary>
        /// Gets and sets the SoundCardDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SoundCardDescription")]
        public String SoundCardDescription
        {
            get { return this.soundCardDescriptionField ; }
            set { this.soundCardDescriptionField= value; }
        }



        /// <summary>
        /// Sets the SoundCardDescription property
        /// </summary>
        /// <param name="soundCardDescription">SoundCardDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSoundCardDescription(String soundCardDescription)
        {
            this.soundCardDescriptionField = soundCardDescription;
            return this;
        }



        /// <summary>
        /// Checks if SoundCardDescription property is set
        /// </summary>
        /// <returns>true if SoundCardDescription property is set</returns>
        public Boolean IsSetSoundCardDescription()
        {
            return  this.soundCardDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the SpeakerCount property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SpeakerCount")]
        public Decimal SpeakerCount
        {
            get { return this.speakerCountField.GetValueOrDefault() ; }
            set { this.speakerCountField= value; }
        }



        /// <summary>
        /// Sets the SpeakerCount property
        /// </summary>
        /// <param name="speakerCount">SpeakerCount property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSpeakerCount(Decimal speakerCount)
        {
            this.speakerCountField = speakerCount;
            return this;
        }



        /// <summary>
        /// Checks if SpeakerCount property is set
        /// </summary>
        /// <returns>true if SpeakerCount property is set</returns>
        public Boolean IsSetSpeakerCount()
        {
            return  this.speakerCountField != null;

        }


        /// <summary>
        /// Gets and sets the SpeakerDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SpeakerDescription")]
        public String SpeakerDescription
        {
            get { return this.speakerDescriptionField ; }
            set { this.speakerDescriptionField= value; }
        }



        /// <summary>
        /// Sets the SpeakerDescription property
        /// </summary>
        /// <param name="speakerDescription">SpeakerDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSpeakerDescription(String speakerDescription)
        {
            this.speakerDescriptionField = speakerDescription;
            return this;
        }



        /// <summary>
        /// Checks if SpeakerDescription property is set
        /// </summary>
        /// <returns>true if SpeakerDescription property is set</returns>
        public Boolean IsSetSpeakerDescription()
        {
            return  this.speakerDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the SpecialFeatures property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SpecialFeatures")]
        public List<String> SpecialFeatures
        {
            get
            {
                if (this.specialFeaturesField == null)
                {
                    this.specialFeaturesField = new List<String>();
                }
                return this.specialFeaturesField;
            }
            set { this.specialFeaturesField =  value; }
        }



        /// <summary>
        /// Sets the SpecialFeatures property
        /// </summary>
        /// <param name="list">SpecialFeatures property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSpecialFeatures(params String[] list)
        {
            foreach (String item in list)
            {
                SpecialFeatures.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of SpecialFeatures property is set
        /// </summary>
        /// <returns>true if SpecialFeatures property is set</returns>
        public Boolean IsSetSpecialFeatures()
        {
            return (SpecialFeatures.Count > 0);
        }




        /// <summary>
        /// Gets and sets the StoneClarity property.
        /// </summary>
        [XmlElementAttribute(ElementName = "StoneClarity")]
        public String StoneClarity
        {
            get { return this.stoneClarityField ; }
            set { this.stoneClarityField= value; }
        }



        /// <summary>
        /// Sets the StoneClarity property
        /// </summary>
        /// <param name="stoneClarity">StoneClarity property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithStoneClarity(String stoneClarity)
        {
            this.stoneClarityField = stoneClarity;
            return this;
        }



        /// <summary>
        /// Checks if StoneClarity property is set
        /// </summary>
        /// <returns>true if StoneClarity property is set</returns>
        public Boolean IsSetStoneClarity()
        {
            return  this.stoneClarityField != null;

        }


        /// <summary>
        /// Gets and sets the StoneColor property.
        /// </summary>
        [XmlElementAttribute(ElementName = "StoneColor")]
        public String StoneColor
        {
            get { return this.stoneColorField ; }
            set { this.stoneColorField= value; }
        }



        /// <summary>
        /// Sets the StoneColor property
        /// </summary>
        /// <param name="stoneColor">StoneColor property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithStoneColor(String stoneColor)
        {
            this.stoneColorField = stoneColor;
            return this;
        }



        /// <summary>
        /// Checks if StoneColor property is set
        /// </summary>
        /// <returns>true if StoneColor property is set</returns>
        public Boolean IsSetStoneColor()
        {
            return  this.stoneColorField != null;

        }


        /// <summary>
        /// Gets and sets the StoneCut property.
        /// </summary>
        [XmlElementAttribute(ElementName = "StoneCut")]
        public String StoneCut
        {
            get { return this.stoneCutField ; }
            set { this.stoneCutField= value; }
        }



        /// <summary>
        /// Sets the StoneCut property
        /// </summary>
        /// <param name="stoneCut">StoneCut property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithStoneCut(String stoneCut)
        {
            this.stoneCutField = stoneCut;
            return this;
        }



        /// <summary>
        /// Checks if StoneCut property is set
        /// </summary>
        /// <returns>true if StoneCut property is set</returns>
        public Boolean IsSetStoneCut()
        {
            return  this.stoneCutField != null;

        }


        /// <summary>
        /// Gets and sets the StoneShape property.
        /// </summary>
        [XmlElementAttribute(ElementName = "StoneShape")]
        public String StoneShape
        {
            get { return this.stoneShapeField ; }
            set { this.stoneShapeField= value; }
        }



        /// <summary>
        /// Sets the StoneShape property
        /// </summary>
        /// <param name="stoneShape">StoneShape property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithStoneShape(String stoneShape)
        {
            this.stoneShapeField = stoneShape;
            return this;
        }



        /// <summary>
        /// Checks if StoneShape property is set
        /// </summary>
        /// <returns>true if StoneShape property is set</returns>
        public Boolean IsSetStoneShape()
        {
            return  this.stoneShapeField != null;

        }


        /// <summary>
        /// Gets and sets the StoneWeight property.
        /// </summary>
        [XmlElementAttribute(ElementName = "StoneWeight")]
        public DecimalWithUnits StoneWeight
        {
            get { return this.stoneWeightField ; }
            set { this.stoneWeightField = value; }
        }



        /// <summary>
        /// Sets the StoneWeight property
        /// </summary>
        /// <param name="stoneWeight">StoneWeight property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithStoneWeight(DecimalWithUnits stoneWeight)
        {
            this.stoneWeightField = stoneWeight;
            return this;
        }



        /// <summary>
        /// Checks if StoneWeight property is set
        /// </summary>
        /// <returns>true if StoneWeight property is set</returns>
        public Boolean IsSetStoneWeight()
        {
            return this.stoneWeightField != null;
        }




        /// <summary>
        /// Gets and sets the Studio property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Studio")]
        public String Studio
        {
            get { return this.studioField ; }
            set { this.studioField= value; }
        }



        /// <summary>
        /// Sets the Studio property
        /// </summary>
        /// <param name="studio">Studio property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithStudio(String studio)
        {
            this.studioField = studio;
            return this;
        }



        /// <summary>
        /// Checks if Studio property is set
        /// </summary>
        /// <returns>true if Studio property is set</returns>
        public Boolean IsSetStudio()
        {
            return  this.studioField != null;

        }


        /// <summary>
        /// Gets and sets the SubscriptionLength property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SubscriptionLength")]
        public NonNegativeIntegerWithUnits SubscriptionLength
        {
            get { return this.subscriptionLengthField ; }
            set { this.subscriptionLengthField = value; }
        }



        /// <summary>
        /// Sets the SubscriptionLength property
        /// </summary>
        /// <param name="subscriptionLength">SubscriptionLength property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSubscriptionLength(NonNegativeIntegerWithUnits subscriptionLength)
        {
            this.subscriptionLengthField = subscriptionLength;
            return this;
        }



        /// <summary>
        /// Checks if SubscriptionLength property is set
        /// </summary>
        /// <returns>true if SubscriptionLength property is set</returns>
        public Boolean IsSetSubscriptionLength()
        {
            return this.subscriptionLengthField != null;
        }




        /// <summary>
        /// Gets and sets the SupportedImageType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SupportedImageType")]
        public List<String> SupportedImageType
        {
            get
            {
                if (this.supportedImageTypeField == null)
                {
                    this.supportedImageTypeField = new List<String>();
                }
                return this.supportedImageTypeField;
            }
            set { this.supportedImageTypeField =  value; }
        }



        /// <summary>
        /// Sets the SupportedImageType property
        /// </summary>
        /// <param name="list">SupportedImageType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSupportedImageType(params String[] list)
        {
            foreach (String item in list)
            {
                SupportedImageType.Add(item);
            }
            return this;
        }          
 


        /// <summary>
        /// Checks of SupportedImageType property is set
        /// </summary>
        /// <returns>true if SupportedImageType property is set</returns>
        public Boolean IsSetSupportedImageType()
        {
            return (SupportedImageType.Count > 0);
        }




        /// <summary>
        /// Gets and sets the SystemBusSpeed property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SystemBusSpeed")]
        public DecimalWithUnits SystemBusSpeed
        {
            get { return this.systemBusSpeedField ; }
            set { this.systemBusSpeedField = value; }
        }



        /// <summary>
        /// Sets the SystemBusSpeed property
        /// </summary>
        /// <param name="systemBusSpeed">SystemBusSpeed property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSystemBusSpeed(DecimalWithUnits systemBusSpeed)
        {
            this.systemBusSpeedField = systemBusSpeed;
            return this;
        }



        /// <summary>
        /// Checks if SystemBusSpeed property is set
        /// </summary>
        /// <returns>true if SystemBusSpeed property is set</returns>
        public Boolean IsSetSystemBusSpeed()
        {
            return this.systemBusSpeedField != null;
        }




        /// <summary>
        /// Gets and sets the SystemMemorySizeMax property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SystemMemorySizeMax")]
        public DecimalWithUnits SystemMemorySizeMax
        {
            get { return this.systemMemorySizeMaxField ; }
            set { this.systemMemorySizeMaxField = value; }
        }



        /// <summary>
        /// Sets the SystemMemorySizeMax property
        /// </summary>
        /// <param name="systemMemorySizeMax">SystemMemorySizeMax property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSystemMemorySizeMax(DecimalWithUnits systemMemorySizeMax)
        {
            this.systemMemorySizeMaxField = systemMemorySizeMax;
            return this;
        }



        /// <summary>
        /// Checks if SystemMemorySizeMax property is set
        /// </summary>
        /// <returns>true if SystemMemorySizeMax property is set</returns>
        public Boolean IsSetSystemMemorySizeMax()
        {
            return this.systemMemorySizeMaxField != null;
        }




        /// <summary>
        /// Gets and sets the SystemMemorySize property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SystemMemorySize")]
        public DecimalWithUnits SystemMemorySize
        {
            get { return this.systemMemorySizeField ; }
            set { this.systemMemorySizeField = value; }
        }



        /// <summary>
        /// Sets the SystemMemorySize property
        /// </summary>
        /// <param name="systemMemorySize">SystemMemorySize property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSystemMemorySize(DecimalWithUnits systemMemorySize)
        {
            this.systemMemorySizeField = systemMemorySize;
            return this;
        }



        /// <summary>
        /// Checks if SystemMemorySize property is set
        /// </summary>
        /// <returns>true if SystemMemorySize property is set</returns>
        public Boolean IsSetSystemMemorySize()
        {
            return this.systemMemorySizeField != null;
        }




        /// <summary>
        /// Gets and sets the SystemMemoryType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "SystemMemoryType")]
        public String SystemMemoryType
        {
            get { return this.systemMemoryTypeField ; }
            set { this.systemMemoryTypeField= value; }
        }



        /// <summary>
        /// Sets the SystemMemoryType property
        /// </summary>
        /// <param name="systemMemoryType">SystemMemoryType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithSystemMemoryType(String systemMemoryType)
        {
            this.systemMemoryTypeField = systemMemoryType;
            return this;
        }



        /// <summary>
        /// Checks if SystemMemoryType property is set
        /// </summary>
        /// <returns>true if SystemMemoryType property is set</returns>
        public Boolean IsSetSystemMemoryType()
        {
            return  this.systemMemoryTypeField != null;

        }


        /// <summary>
        /// Gets and sets the TellingPageIndicator property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TellingPageIndicator")]
        public String TellingPageIndicator
        {
            get { return this.tellingPageIndicatorField ; }
            set { this.tellingPageIndicatorField= value; }
        }



        /// <summary>
        /// Sets the TellingPageIndicator property
        /// </summary>
        /// <param name="tellingPageIndicator">TellingPageIndicator property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTellingPageIndicator(String tellingPageIndicator)
        {
            this.tellingPageIndicatorField = tellingPageIndicator;
            return this;
        }



        /// <summary>
        /// Checks if TellingPageIndicator property is set
        /// </summary>
        /// <returns>true if TellingPageIndicator property is set</returns>
        public Boolean IsSetTellingPageIndicator()
        {
            return  this.tellingPageIndicatorField != null;

        }


        /// <summary>
        /// Gets and sets the TheatricalReleaseDate property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TheatricalReleaseDate")]
        public String TheatricalReleaseDate
        {
            get { return this.theatricalReleaseDateField ; }
            set { this.theatricalReleaseDateField= value; }
        }



        /// <summary>
        /// Sets the TheatricalReleaseDate property
        /// </summary>
        /// <param name="theatricalReleaseDate">TheatricalReleaseDate property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTheatricalReleaseDate(String theatricalReleaseDate)
        {
            this.theatricalReleaseDateField = theatricalReleaseDate;
            return this;
        }



        /// <summary>
        /// Checks if TheatricalReleaseDate property is set
        /// </summary>
        /// <returns>true if TheatricalReleaseDate property is set</returns>
        public Boolean IsSetTheatricalReleaseDate()
        {
            return  this.theatricalReleaseDateField != null;

        }


        /// <summary>
        /// Gets and sets the Title property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Title")]
        public String Title
        {
            get { return this.titleField ; }
            set { this.titleField= value; }
        }



        /// <summary>
        /// Sets the Title property
        /// </summary>
        /// <param name="title">Title property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTitle(String title)
        {
            this.titleField = title;
            return this;
        }



        /// <summary>
        /// Checks if Title property is set
        /// </summary>
        /// <returns>true if Title property is set</returns>
        public Boolean IsSetTitle()
        {
            return  this.titleField != null;

        }


        /// <summary>
        /// Gets and sets the TotalDiamondWeight property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalDiamondWeight")]
        public DecimalWithUnits TotalDiamondWeight
        {
            get { return this.totalDiamondWeightField ; }
            set { this.totalDiamondWeightField = value; }
        }



        /// <summary>
        /// Sets the TotalDiamondWeight property
        /// </summary>
        /// <param name="totalDiamondWeight">TotalDiamondWeight property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalDiamondWeight(DecimalWithUnits totalDiamondWeight)
        {
            this.totalDiamondWeightField = totalDiamondWeight;
            return this;
        }



        /// <summary>
        /// Checks if TotalDiamondWeight property is set
        /// </summary>
        /// <returns>true if TotalDiamondWeight property is set</returns>
        public Boolean IsSetTotalDiamondWeight()
        {
            return this.totalDiamondWeightField != null;
        }




        /// <summary>
        /// Gets and sets the TotalExternalBaysFree property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalExternalBaysFree")]
        public Decimal TotalExternalBaysFree
        {
            get { return this.totalExternalBaysFreeField.GetValueOrDefault() ; }
            set { this.totalExternalBaysFreeField= value; }
        }



        /// <summary>
        /// Sets the TotalExternalBaysFree property
        /// </summary>
        /// <param name="totalExternalBaysFree">TotalExternalBaysFree property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalExternalBaysFree(Decimal totalExternalBaysFree)
        {
            this.totalExternalBaysFreeField = totalExternalBaysFree;
            return this;
        }



        /// <summary>
        /// Checks if TotalExternalBaysFree property is set
        /// </summary>
        /// <returns>true if TotalExternalBaysFree property is set</returns>
        public Boolean IsSetTotalExternalBaysFree()
        {
            return  this.totalExternalBaysFreeField != null;

        }


        /// <summary>
        /// Gets and sets the TotalFirewirePorts property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalFirewirePorts")]
        public Decimal TotalFirewirePorts
        {
            get { return this.totalFirewirePortsField.GetValueOrDefault() ; }
            set { this.totalFirewirePortsField= value; }
        }



        /// <summary>
        /// Sets the TotalFirewirePorts property
        /// </summary>
        /// <param name="totalFirewirePorts">TotalFirewirePorts property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalFirewirePorts(Decimal totalFirewirePorts)
        {
            this.totalFirewirePortsField = totalFirewirePorts;
            return this;
        }



        /// <summary>
        /// Checks if TotalFirewirePorts property is set
        /// </summary>
        /// <returns>true if TotalFirewirePorts property is set</returns>
        public Boolean IsSetTotalFirewirePorts()
        {
            return  this.totalFirewirePortsField != null;

        }


        /// <summary>
        /// Gets and sets the TotalGemWeight property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalGemWeight")]
        public DecimalWithUnits TotalGemWeight
        {
            get { return this.totalGemWeightField ; }
            set { this.totalGemWeightField = value; }
        }



        /// <summary>
        /// Sets the TotalGemWeight property
        /// </summary>
        /// <param name="totalGemWeight">TotalGemWeight property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalGemWeight(DecimalWithUnits totalGemWeight)
        {
            this.totalGemWeightField = totalGemWeight;
            return this;
        }



        /// <summary>
        /// Checks if TotalGemWeight property is set
        /// </summary>
        /// <returns>true if TotalGemWeight property is set</returns>
        public Boolean IsSetTotalGemWeight()
        {
            return this.totalGemWeightField != null;
        }




        /// <summary>
        /// Gets and sets the TotalInternalBaysFree property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalInternalBaysFree")]
        public Decimal TotalInternalBaysFree
        {
            get { return this.totalInternalBaysFreeField.GetValueOrDefault() ; }
            set { this.totalInternalBaysFreeField= value; }
        }



        /// <summary>
        /// Sets the TotalInternalBaysFree property
        /// </summary>
        /// <param name="totalInternalBaysFree">TotalInternalBaysFree property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalInternalBaysFree(Decimal totalInternalBaysFree)
        {
            this.totalInternalBaysFreeField = totalInternalBaysFree;
            return this;
        }



        /// <summary>
        /// Checks if TotalInternalBaysFree property is set
        /// </summary>
        /// <returns>true if TotalInternalBaysFree property is set</returns>
        public Boolean IsSetTotalInternalBaysFree()
        {
            return  this.totalInternalBaysFreeField != null;

        }


        /// <summary>
        /// Gets and sets the TotalMetalWeight property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalMetalWeight")]
        public DecimalWithUnits TotalMetalWeight
        {
            get { return this.totalMetalWeightField ; }
            set { this.totalMetalWeightField = value; }
        }



        /// <summary>
        /// Sets the TotalMetalWeight property
        /// </summary>
        /// <param name="totalMetalWeight">TotalMetalWeight property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalMetalWeight(DecimalWithUnits totalMetalWeight)
        {
            this.totalMetalWeightField = totalMetalWeight;
            return this;
        }



        /// <summary>
        /// Checks if TotalMetalWeight property is set
        /// </summary>
        /// <returns>true if TotalMetalWeight property is set</returns>
        public Boolean IsSetTotalMetalWeight()
        {
            return this.totalMetalWeightField != null;
        }




        /// <summary>
        /// Gets and sets the TotalNTSCPALPorts property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalNTSCPALPorts")]
        public Decimal TotalNTSCPALPorts
        {
            get { return this.totalNTSCPALPortsField.GetValueOrDefault() ; }
            set { this.totalNTSCPALPortsField= value; }
        }



        /// <summary>
        /// Sets the TotalNTSCPALPorts property
        /// </summary>
        /// <param name="totalNTSCPALPorts">TotalNTSCPALPorts property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalNTSCPALPorts(Decimal totalNTSCPALPorts)
        {
            this.totalNTSCPALPortsField = totalNTSCPALPorts;
            return this;
        }



        /// <summary>
        /// Checks if TotalNTSCPALPorts property is set
        /// </summary>
        /// <returns>true if TotalNTSCPALPorts property is set</returns>
        public Boolean IsSetTotalNTSCPALPorts()
        {
            return  this.totalNTSCPALPortsField != null;

        }


        /// <summary>
        /// Gets and sets the TotalParallelPorts property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalParallelPorts")]
        public Decimal TotalParallelPorts
        {
            get { return this.totalParallelPortsField.GetValueOrDefault() ; }
            set { this.totalParallelPortsField= value; }
        }



        /// <summary>
        /// Sets the TotalParallelPorts property
        /// </summary>
        /// <param name="totalParallelPorts">TotalParallelPorts property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalParallelPorts(Decimal totalParallelPorts)
        {
            this.totalParallelPortsField = totalParallelPorts;
            return this;
        }



        /// <summary>
        /// Checks if TotalParallelPorts property is set
        /// </summary>
        /// <returns>true if TotalParallelPorts property is set</returns>
        public Boolean IsSetTotalParallelPorts()
        {
            return  this.totalParallelPortsField != null;

        }


        /// <summary>
        /// Gets and sets the TotalPCCardSlots property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalPCCardSlots")]
        public Decimal TotalPCCardSlots
        {
            get { return this.totalPCCardSlotsField.GetValueOrDefault() ; }
            set { this.totalPCCardSlotsField= value; }
        }



        /// <summary>
        /// Sets the TotalPCCardSlots property
        /// </summary>
        /// <param name="totalPCCardSlots">TotalPCCardSlots property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalPCCardSlots(Decimal totalPCCardSlots)
        {
            this.totalPCCardSlotsField = totalPCCardSlots;
            return this;
        }



        /// <summary>
        /// Checks if TotalPCCardSlots property is set
        /// </summary>
        /// <returns>true if TotalPCCardSlots property is set</returns>
        public Boolean IsSetTotalPCCardSlots()
        {
            return  this.totalPCCardSlotsField != null;

        }


        /// <summary>
        /// Gets and sets the TotalPCISlotsFree property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalPCISlotsFree")]
        public Decimal TotalPCISlotsFree
        {
            get { return this.totalPCISlotsFreeField.GetValueOrDefault() ; }
            set { this.totalPCISlotsFreeField= value; }
        }



        /// <summary>
        /// Sets the TotalPCISlotsFree property
        /// </summary>
        /// <param name="totalPCISlotsFree">TotalPCISlotsFree property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalPCISlotsFree(Decimal totalPCISlotsFree)
        {
            this.totalPCISlotsFreeField = totalPCISlotsFree;
            return this;
        }



        /// <summary>
        /// Checks if TotalPCISlotsFree property is set
        /// </summary>
        /// <returns>true if TotalPCISlotsFree property is set</returns>
        public Boolean IsSetTotalPCISlotsFree()
        {
            return  this.totalPCISlotsFreeField != null;

        }


        /// <summary>
        /// Gets and sets the TotalSerialPorts property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalSerialPorts")]
        public Decimal TotalSerialPorts
        {
            get { return this.totalSerialPortsField.GetValueOrDefault() ; }
            set { this.totalSerialPortsField= value; }
        }



        /// <summary>
        /// Sets the TotalSerialPorts property
        /// </summary>
        /// <param name="totalSerialPorts">TotalSerialPorts property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalSerialPorts(Decimal totalSerialPorts)
        {
            this.totalSerialPortsField = totalSerialPorts;
            return this;
        }



        /// <summary>
        /// Checks if TotalSerialPorts property is set
        /// </summary>
        /// <returns>true if TotalSerialPorts property is set</returns>
        public Boolean IsSetTotalSerialPorts()
        {
            return  this.totalSerialPortsField != null;

        }


        /// <summary>
        /// Gets and sets the TotalSVideoOutPorts property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalSVideoOutPorts")]
        public Decimal TotalSVideoOutPorts
        {
            get { return this.totalSVideoOutPortsField.GetValueOrDefault() ; }
            set { this.totalSVideoOutPortsField= value; }
        }



        /// <summary>
        /// Sets the TotalSVideoOutPorts property
        /// </summary>
        /// <param name="totalSVideoOutPorts">TotalSVideoOutPorts property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalSVideoOutPorts(Decimal totalSVideoOutPorts)
        {
            this.totalSVideoOutPortsField = totalSVideoOutPorts;
            return this;
        }



        /// <summary>
        /// Checks if TotalSVideoOutPorts property is set
        /// </summary>
        /// <returns>true if TotalSVideoOutPorts property is set</returns>
        public Boolean IsSetTotalSVideoOutPorts()
        {
            return  this.totalSVideoOutPortsField != null;

        }


        /// <summary>
        /// Gets and sets the TotalUSB2Ports property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalUSB2Ports")]
        public Decimal TotalUSB2Ports
        {
            get { return this.totalUSB2PortsField.GetValueOrDefault() ; }
            set { this.totalUSB2PortsField= value; }
        }



        /// <summary>
        /// Sets the TotalUSB2Ports property
        /// </summary>
        /// <param name="totalUSB2Ports">TotalUSB2Ports property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalUSB2Ports(Decimal totalUSB2Ports)
        {
            this.totalUSB2PortsField = totalUSB2Ports;
            return this;
        }



        /// <summary>
        /// Checks if TotalUSB2Ports property is set
        /// </summary>
        /// <returns>true if TotalUSB2Ports property is set</returns>
        public Boolean IsSetTotalUSB2Ports()
        {
            return  this.totalUSB2PortsField != null;

        }


        /// <summary>
        /// Gets and sets the TotalUSBPorts property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalUSBPorts")]
        public Decimal TotalUSBPorts
        {
            get { return this.totalUSBPortsField.GetValueOrDefault() ; }
            set { this.totalUSBPortsField= value; }
        }



        /// <summary>
        /// Sets the TotalUSBPorts property
        /// </summary>
        /// <param name="totalUSBPorts">TotalUSBPorts property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalUSBPorts(Decimal totalUSBPorts)
        {
            this.totalUSBPortsField = totalUSBPorts;
            return this;
        }



        /// <summary>
        /// Checks if TotalUSBPorts property is set
        /// </summary>
        /// <returns>true if TotalUSBPorts property is set</returns>
        public Boolean IsSetTotalUSBPorts()
        {
            return  this.totalUSBPortsField != null;

        }


        /// <summary>
        /// Gets and sets the TotalVGAOutPorts property.
        /// </summary>
        [XmlElementAttribute(ElementName = "TotalVGAOutPorts")]
        public Decimal TotalVGAOutPorts
        {
            get { return this.totalVGAOutPortsField.GetValueOrDefault() ; }
            set { this.totalVGAOutPortsField= value; }
        }



        /// <summary>
        /// Sets the TotalVGAOutPorts property
        /// </summary>
        /// <param name="totalVGAOutPorts">TotalVGAOutPorts property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithTotalVGAOutPorts(Decimal totalVGAOutPorts)
        {
            this.totalVGAOutPortsField = totalVGAOutPorts;
            return this;
        }



        /// <summary>
        /// Checks if TotalVGAOutPorts property is set
        /// </summary>
        /// <returns>true if TotalVGAOutPorts property is set</returns>
        public Boolean IsSetTotalVGAOutPorts()
        {
            return  this.totalVGAOutPortsField != null;

        }


        /// <summary>
        /// Gets and sets the UPC property.
        /// </summary>
        [XmlElementAttribute(ElementName = "UPC")]
        public String UPC
        {
            get { return this.UPCField ; }
            set { this.UPCField= value; }
        }



        /// <summary>
        /// Sets the UPC property
        /// </summary>
        /// <param name="UPC">UPC property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithUPC(String UPC)
        {
            this.UPCField = UPC;
            return this;
        }



        /// <summary>
        /// Checks if UPC property is set
        /// </summary>
        /// <returns>true if UPC property is set</returns>
        public Boolean IsSetUPC()
        {
            return  this.UPCField != null;

        }


        /// <summary>
        /// Gets and sets the VariationDenomination property.
        /// </summary>
        [XmlElementAttribute(ElementName = "VariationDenomination")]
        public String VariationDenomination
        {
            get { return this.variationDenominationField ; }
            set { this.variationDenominationField= value; }
        }



        /// <summary>
        /// Sets the VariationDenomination property
        /// </summary>
        /// <param name="variationDenomination">VariationDenomination property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithVariationDenomination(String variationDenomination)
        {
            this.variationDenominationField = variationDenomination;
            return this;
        }



        /// <summary>
        /// Checks if VariationDenomination property is set
        /// </summary>
        /// <returns>true if VariationDenomination property is set</returns>
        public Boolean IsSetVariationDenomination()
        {
            return  this.variationDenominationField != null;

        }


        /// <summary>
        /// Gets and sets the VariationDescription property.
        /// </summary>
        [XmlElementAttribute(ElementName = "VariationDescription")]
        public String VariationDescription
        {
            get { return this.variationDescriptionField ; }
            set { this.variationDescriptionField= value; }
        }



        /// <summary>
        /// Sets the VariationDescription property
        /// </summary>
        /// <param name="variationDescription">VariationDescription property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithVariationDescription(String variationDescription)
        {
            this.variationDescriptionField = variationDescription;
            return this;
        }



        /// <summary>
        /// Checks if VariationDescription property is set
        /// </summary>
        /// <returns>true if VariationDescription property is set</returns>
        public Boolean IsSetVariationDescription()
        {
            return  this.variationDescriptionField != null;

        }


        /// <summary>
        /// Gets and sets the VendorRebate property.
        /// </summary>
        [XmlElementAttribute(ElementName = "VendorRebate")]
        public VendorRebate VendorRebate
        {
            get { return this.vendorRebateField ; }
            set { this.vendorRebateField = value; }
        }



        /// <summary>
        /// Sets the VendorRebate property
        /// </summary>
        /// <param name="vendorRebate">VendorRebate property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithVendorRebate(VendorRebate vendorRebate)
        {
            this.vendorRebateField = vendorRebate;
            return this;
        }



        /// <summary>
        /// Checks if VendorRebate property is set
        /// </summary>
        /// <returns>true if VendorRebate property is set</returns>
        public Boolean IsSetVendorRebate()
        {
            return this.vendorRebateField != null;
        }




        /// <summary>
        /// Gets and sets the Warranty property.
        /// </summary>
        [XmlElementAttribute(ElementName = "Warranty")]
        public String Warranty
        {
            get { return this.warrantyField ; }
            set { this.warrantyField= value; }
        }



        /// <summary>
        /// Sets the Warranty property
        /// </summary>
        /// <param name="warranty">Warranty property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithWarranty(String warranty)
        {
            this.warrantyField = warranty;
            return this;
        }



        /// <summary>
        /// Checks if Warranty property is set
        /// </summary>
        /// <returns>true if Warranty property is set</returns>
        public Boolean IsSetWarranty()
        {
            return  this.warrantyField != null;

        }


        /// <summary>
        /// Gets and sets the WatchMovementType property.
        /// </summary>
        [XmlElementAttribute(ElementName = "WatchMovementType")]
        public String WatchMovementType
        {
            get { return this.watchMovementTypeField ; }
            set { this.watchMovementTypeField= value; }
        }



        /// <summary>
        /// Sets the WatchMovementType property
        /// </summary>
        /// <param name="watchMovementType">WatchMovementType property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithWatchMovementType(String watchMovementType)
        {
            this.watchMovementTypeField = watchMovementType;
            return this;
        }



        /// <summary>
        /// Checks if WatchMovementType property is set
        /// </summary>
        /// <returns>true if WatchMovementType property is set</returns>
        public Boolean IsSetWatchMovementType()
        {
            return  this.watchMovementTypeField != null;

        }


        /// <summary>
        /// Gets and sets the WebsiteBuyability property.
        /// </summary>
        [XmlElementAttribute(ElementName = "WebsiteBuyability")]
        public String WebsiteBuyability
        {
            get { return this.websiteBuyabilityField ; }
            set { this.websiteBuyabilityField= value; }
        }



        /// <summary>
        /// Sets the WebsiteBuyability property
        /// </summary>
        /// <param name="websiteBuyability">WebsiteBuyability property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithWebsiteBuyability(String websiteBuyability)
        {
            this.websiteBuyabilityField = websiteBuyability;
            return this;
        }



        /// <summary>
        /// Checks if WebsiteBuyability property is set
        /// </summary>
        /// <returns>true if WebsiteBuyability property is set</returns>
        public Boolean IsSetWebsiteBuyability()
        {
            return  this.websiteBuyabilityField != null;

        }


        /// <summary>
        /// Gets and sets the WaterResistanceDepth property.
        /// </summary>
        [XmlElementAttribute(ElementName = "WaterResistanceDepth")]
        public DecimalWithUnits WaterResistanceDepth
        {
            get { return this.waterResistanceDepthField ; }
            set { this.waterResistanceDepthField = value; }
        }



        /// <summary>
        /// Sets the WaterResistanceDepth property
        /// </summary>
        /// <param name="waterResistanceDepth">WaterResistanceDepth property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithWaterResistanceDepth(DecimalWithUnits waterResistanceDepth)
        {
            this.waterResistanceDepthField = waterResistanceDepth;
            return this;
        }



        /// <summary>
        /// Checks if WaterResistanceDepth property is set
        /// </summary>
        /// <returns>true if WaterResistanceDepth property is set</returns>
        public Boolean IsSetWaterResistanceDepth()
        {
            return this.waterResistanceDepthField != null;
        }




        /// <summary>
        /// Gets and sets the WirelessMicrophoneFrequency property.
        /// </summary>
        [XmlElementAttribute(ElementName = "WirelessMicrophoneFrequency")]
        public Decimal WirelessMicrophoneFrequency
        {
            get { return this.wirelessMicrophoneFrequencyField.GetValueOrDefault() ; }
            set { this.wirelessMicrophoneFrequencyField= value; }
        }



        /// <summary>
        /// Sets the WirelessMicrophoneFrequency property
        /// </summary>
        /// <param name="wirelessMicrophoneFrequency">WirelessMicrophoneFrequency property</param>
        /// <returns>this instance</returns>
        public MerchantItemAttributes WithWirelessMicrophoneFrequency(Decimal wirelessMicrophoneFrequency)
        {
            this.wirelessMicrophoneFrequencyField = wirelessMicrophoneFrequency;
            return this;
        }



        /// <summary>
        /// Checks if WirelessMicrophoneFrequency property is set
        /// </summary>
        /// <returns>true if WirelessMicrophoneFrequency property is set</returns>
        public Boolean IsSetWirelessMicrophoneFrequency()
        {
            return  this.wirelessMicrophoneFrequencyField != null;

        }




        /// <summary>
        /// XML fragment representation of this object
        /// </summary>
        /// <returns>XML fragment for this object.</returns>
        /// <remarks>
        /// Name for outer tag expected to be set by calling method. 
        /// This fragment returns inner properties representation only
        /// </remarks>


        protected internal String ToXMLFragment() {
            StringBuilder xml = new StringBuilder();
            List<String> actorList  =  this.Actor;
            foreach (String actor in actorList) { 
                xml.Append("<Actor>");
                xml.Append(EscapeXML(actor));
                xml.Append("</Actor>");
            }	
            if (IsSetAddress()) {
                Address  address = this.Address;
                xml.Append("<Address>");
                xml.Append(address.ToXMLFragment());
                xml.Append("</Address>");
            } 
            if (IsSetAmazonMaximumAge()) {
                DecimalWithUnits  amazonMaximumAge = this.AmazonMaximumAge;
                xml.Append("<AmazonMaximumAge Units=" + "\"" +  EscapeXML(amazonMaximumAge.Units)  + "\"" +  ">");
                xml.Append(amazonMaximumAge.Value);
                xml.Append("</AmazonMaximumAge>");
            } 
            if (IsSetAmazonMinimumAge()) {
                DecimalWithUnits  amazonMinimumAge = this.AmazonMinimumAge;
                xml.Append("<AmazonMinimumAge Units=" + "\"" +  EscapeXML(amazonMinimumAge.Units)  + "\"" +  ">");
                xml.Append(amazonMinimumAge.Value);
                xml.Append("</AmazonMinimumAge>");
            } 
            if (IsSetApertureModes()) {
                xml.Append("<ApertureModes>");
                xml.Append(EscapeXML(this.ApertureModes));
                xml.Append("</ApertureModes>");
            }
            List<String> artistList  =  this.Artist;
            foreach (String artist in artistList) { 
                xml.Append("<Artist>");
                xml.Append(EscapeXML(artist));
                xml.Append("</Artist>");
            }	
            if (IsSetAspectRatio()) {
                xml.Append("<AspectRatio>");
                xml.Append(EscapeXML(this.AspectRatio));
                xml.Append("</AspectRatio>");
            }
            if (IsSetAssemblyInstructions()) {
                xml.Append("<AssemblyInstructions>");
                xml.Append(EscapeXML(this.AssemblyInstructions));
                xml.Append("</AssemblyInstructions>");
            }
            if (IsSetAssemblyRequired()) {
                xml.Append("<AssemblyRequired>");
                xml.Append(EscapeXML(this.AssemblyRequired));
                xml.Append("</AssemblyRequired>");
            }
            if (IsSetAudienceRating()) {
                xml.Append("<AudienceRating>");
                xml.Append(EscapeXML(this.AudienceRating));
                xml.Append("</AudienceRating>");
            }
            List<String> audioFormatList  =  this.AudioFormat;
            foreach (String audioFormat in audioFormatList) { 
                xml.Append("<AudioFormat>");
                xml.Append(EscapeXML(audioFormat));
                xml.Append("</AudioFormat>");
            }	
            List<String> authorList  =  this.Author;
            foreach (String author in authorList) { 
                xml.Append("<Author>");
                xml.Append(EscapeXML(author));
                xml.Append("</Author>");
            }	
            if (IsSetBackFinding()) {
                xml.Append("<BackFinding>");
                xml.Append(EscapeXML(this.BackFinding));
                xml.Append("</BackFinding>");
            }
            if (IsSetBandMaterialType()) {
                xml.Append("<BandMaterialType>");
                xml.Append(EscapeXML(this.BandMaterialType));
                xml.Append("</BandMaterialType>");
            }
            if (IsSetBatteriesIncluded()) {
                xml.Append("<BatteriesIncluded>");
                xml.Append(EscapeXML(this.BatteriesIncluded));
                xml.Append("</BatteriesIncluded>");
            }
            if (IsSetBatteriesRequired()) {
                xml.Append("<BatteriesRequired>");
                xml.Append(EscapeXML(this.BatteriesRequired));
                xml.Append("</BatteriesRequired>");
            }
            if (IsSetBatteries()) {
                NonNegativeIntegerWithUnits  batteries = this.Batteries;
                xml.Append("<Batteries Units=" + "\"" +  EscapeXML(batteries.Units)  + "\"" +  ">");
                xml.Append(batteries.Value);
                xml.Append("</Batteries>");
            } 
            if (IsSetBatteryDescription()) {
                xml.Append("<BatteryDescription>");
                xml.Append(EscapeXML(this.BatteryDescription));
                xml.Append("</BatteryDescription>");
            }
            if (IsSetBatteryType()) {
                xml.Append("<BatteryType>");
                xml.Append(EscapeXML(this.BatteryType));
                xml.Append("</BatteryType>");
            }
            if (IsSetBezelMaterialType()) {
                xml.Append("<BezelMaterialType>");
                xml.Append(EscapeXML(this.BezelMaterialType));
                xml.Append("</BezelMaterialType>");
            }
            if (IsSetBinding()) {
                xml.Append("<Binding>");
                xml.Append(EscapeXML(this.Binding));
                xml.Append("</Binding>");
            }
            if (IsSetBrand()) {
                xml.Append("<Brand>");
                xml.Append(EscapeXML(this.Brand));
                xml.Append("</Brand>");
            }
            if (IsSetCalendarType()) {
                xml.Append("<CalendarType>");
                xml.Append(EscapeXML(this.CalendarType));
                xml.Append("</CalendarType>");
            }
            List<String> cameraManualFeaturesList  =  this.CameraManualFeatures;
            foreach (String cameraManualFeatures in cameraManualFeaturesList) { 
                xml.Append("<CameraManualFeatures>");
                xml.Append(EscapeXML(cameraManualFeatures));
                xml.Append("</CameraManualFeatures>");
            }	
            if (IsSetCaseDiameter()) {
                DecimalWithUnits  caseDiameter = this.CaseDiameter;
                xml.Append("<CaseDiameter Units=" + "\"" +  EscapeXML(caseDiameter.Units)  + "\"" +  ">");
                xml.Append(caseDiameter.Value);
                xml.Append("</CaseDiameter>");
            } 
            if (IsSetCaseMaterialType()) {
                xml.Append("<CaseMaterialType>");
                xml.Append(EscapeXML(this.CaseMaterialType));
                xml.Append("</CaseMaterialType>");
            }
            if (IsSetCaseThickness()) {
                DecimalWithUnits  caseThickness = this.CaseThickness;
                xml.Append("<CaseThickness Units=" + "\"" +  EscapeXML(caseThickness.Units)  + "\"" +  ">");
                xml.Append(caseThickness.Value);
                xml.Append("</CaseThickness>");
            } 
            if (IsSetCaseType()) {
                xml.Append("<CaseType>");
                xml.Append(EscapeXML(this.CaseType));
                xml.Append("</CaseType>");
            }
            if (IsSetCatalogNumber()) {
                xml.Append("<CatalogNumber>");
                xml.Append(EscapeXML(this.CatalogNumber));
                xml.Append("</CatalogNumber>");
            }
            if (IsSetCDRWDescription()) {
                xml.Append("<CDRWDescription>");
                xml.Append(EscapeXML(this.CDRWDescription));
                xml.Append("</CDRWDescription>");
            }
            if (IsSetChainType()) {
                xml.Append("<ChainType>");
                xml.Append(EscapeXML(this.ChainType));
                xml.Append("</ChainType>");
            }
            if (IsSetClaspType()) {
                xml.Append("<ClaspType>");
                xml.Append(EscapeXML(this.ClaspType));
                xml.Append("</ClaspType>");
            }
            if (IsSetClothingSize()) {
                xml.Append("<ClothingSize>");
                xml.Append(EscapeXML(this.ClothingSize));
                xml.Append("</ClothingSize>");
            }
            if (IsSetColor()) {
                xml.Append("<Color>");
                xml.Append(EscapeXML(this.Color));
                xml.Append("</Color>");
            }
            if (IsSetCompatibility()) {
                xml.Append("<Compatibility>");
                xml.Append(EscapeXML(this.Compatibility));
                xml.Append("</Compatibility>");
            }
            if (IsSetComputerHardwareType()) {
                xml.Append("<ComputerHardwareType>");
                xml.Append(EscapeXML(this.ComputerHardwareType));
                xml.Append("</ComputerHardwareType>");
            }
            if (IsSetComputerPlatform()) {
                xml.Append("<ComputerPlatform>");
                xml.Append(EscapeXML(this.ComputerPlatform));
                xml.Append("</ComputerPlatform>");
            }
            if (IsSetConnectivity()) {
                xml.Append("<Connectivity>");
                xml.Append(EscapeXML(this.Connectivity));
                xml.Append("</Connectivity>");
            }
            if (IsSetContinuousShootingSpeed()) {
                DecimalWithUnits  continuousShootingSpeed = this.ContinuousShootingSpeed;
                xml.Append("<ContinuousShootingSpeed Units=" + "\"" +  EscapeXML(continuousShootingSpeed.Units)  + "\"" +  ">");
                xml.Append(continuousShootingSpeed.Value);
                xml.Append("</ContinuousShootingSpeed>");
            } 
            if (IsSetCountry()) {
                xml.Append("<Country>");
                xml.Append(EscapeXML(this.Country));
                xml.Append("</Country>");
            }
            if (IsSetCountryOfOrigin()) {
                xml.Append("<CountryOfOrigin>");
                xml.Append(EscapeXML(this.CountryOfOrigin));
                xml.Append("</CountryOfOrigin>");
            }
            if (IsSetCPUManufacturer()) {
                xml.Append("<CPUManufacturer>");
                xml.Append(EscapeXML(this.CPUManufacturer));
                xml.Append("</CPUManufacturer>");
            }
            if (IsSetCPUSpeed()) {
                DecimalWithUnits  CPUSpeed = this.CPUSpeed;
                xml.Append("<CPUSpeed Units=" + "\"" +  EscapeXML(CPUSpeed.Units)  + "\"" +  ">");
                xml.Append(CPUSpeed.Value);
                xml.Append("</CPUSpeed>");
            } 
            if (IsSetCPUType()) {
                xml.Append("<CPUType>");
                xml.Append(EscapeXML(this.CPUType));
                xml.Append("</CPUType>");
            }
            List<Creator> creatorList = this.Creator;
            foreach (Creator creator in creatorList) {
                xml.Append("<Creator Role=" + "\"" +  EscapeXML(creator.Role)  + "\"" +  ">");
                xml.Append(EscapeXML(creator.Value));
                xml.Append("</Creator>");
            }
            if (IsSetCuisine()) {
                xml.Append("<Cuisine>");
                xml.Append(EscapeXML(this.Cuisine));
                xml.Append("</Cuisine>");
            }
            if (IsSetCustomizable()) {
                xml.Append("<Customizable>");
                xml.Append(EscapeXML(this.Customizable));
                xml.Append("</Customizable>");
            }
            if (IsSetDelayBetweenShots()) {
                DecimalWithUnits  delayBetweenShots = this.DelayBetweenShots;
                xml.Append("<DelayBetweenShots Units=" + "\"" +  EscapeXML(delayBetweenShots.Units)  + "\"" +  ">");
                xml.Append(delayBetweenShots.Value);
                xml.Append("</DelayBetweenShots>");
            } 
            if (IsSetDeliveryOption()) {
                xml.Append("<DeliveryOption>");
                xml.Append(EscapeXML(this.DeliveryOption));
                xml.Append("</DeliveryOption>");
            }
            if (IsSetDepartment()) {
                xml.Append("<Department>");
                xml.Append(EscapeXML(this.Department));
                xml.Append("</Department>");
            }
            if (IsSetDescription()) {
                xml.Append("<Description>");
                xml.Append(EscapeXML(this.Description));
                xml.Append("</Description>");
            }
            if (IsSetDeweyDecimalNumber()) {
                xml.Append("<DeweyDecimalNumber>");
                xml.Append(EscapeXML(this.DeweyDecimalNumber));
                xml.Append("</DeweyDecimalNumber>");
            }
            if (IsSetDialColor()) {
                xml.Append("<DialColor>");
                xml.Append(EscapeXML(this.DialColor));
                xml.Append("</DialColor>");
            }
            if (IsSetDialWindowMaterialType()) {
                xml.Append("<DialWindowMaterialType>");
                xml.Append(EscapeXML(this.DialWindowMaterialType));
                xml.Append("</DialWindowMaterialType>");
            }
            if (IsSetDigitalZoom()) {
                DecimalWithUnits  digitalZoom = this.DigitalZoom;
                xml.Append("<DigitalZoom Units=" + "\"" +  EscapeXML(digitalZoom.Units)  + "\"" +  ">");
                xml.Append(digitalZoom.Value);
                xml.Append("</DigitalZoom>");
            } 
            List<String> directorList  =  this.Director;
            foreach (String director in directorList) { 
                xml.Append("<Director>");
                xml.Append(EscapeXML(director));
                xml.Append("</Director>");
            }	
            if (IsSetDisplaySize()) {
                DecimalWithUnits  displaySize = this.DisplaySize;
                xml.Append("<DisplaySize Units=" + "\"" +  EscapeXML(displaySize.Units)  + "\"" +  ">");
                xml.Append(displaySize.Value);
                xml.Append("</DisplaySize>");
            } 
            if (IsSetDrumSetPieceQuantity()) {
                xml.Append("<DrumSetPieceQuantity>");
                xml.Append(this.DrumSetPieceQuantity);
                xml.Append("</DrumSetPieceQuantity>");
            }
            if (IsSetDVDLayers()) {
                xml.Append("<DVDLayers>");
                xml.Append(this.DVDLayers);
                xml.Append("</DVDLayers>");
            }
            if (IsSetDVDRWDescription()) {
                xml.Append("<DVDRWDescription>");
                xml.Append(EscapeXML(this.DVDRWDescription));
                xml.Append("</DVDRWDescription>");
            }
            if (IsSetDVDSides()) {
                xml.Append("<DVDSides>");
                xml.Append(this.DVDSides);
                xml.Append("</DVDSides>");
            }
            if (IsSetDPCI()) {
                xml.Append("<DPCI>");
                xml.Append(EscapeXML(this.DPCI));
                xml.Append("</DPCI>");
            }
            if (IsSetEAN()) {
                xml.Append("<EAN>");
                xml.Append(EscapeXML(this.EAN));
                xml.Append("</EAN>");
            }
            if (IsSetEdition()) {
                xml.Append("<Edition>");
                xml.Append(EscapeXML(this.Edition));
                xml.Append("</Edition>");
            }
            if (IsSetESRBAgeRating()) {
                xml.Append("<ESRBAgeRating>");
                xml.Append(EscapeXML(this.ESRBAgeRating));
                xml.Append("</ESRBAgeRating>");
            }
            if (IsSetExternalDisplaySupportDescription()) {
                xml.Append("<ExternalDisplaySupportDescription>");
                xml.Append(EscapeXML(this.ExternalDisplaySupportDescription));
                xml.Append("</ExternalDisplaySupportDescription>");
            }
            if (IsSetFabricType()) {
                xml.Append("<FabricType>");
                xml.Append(EscapeXML(this.FabricType));
                xml.Append("</FabricType>");
            }
            if (IsSetFaxNumber()) {
                xml.Append("<FaxNumber>");
                xml.Append(EscapeXML(this.FaxNumber));
                xml.Append("</FaxNumber>");
            }
            List<String> featureList  =  this.Feature;
            foreach (String feature in featureList) { 
                xml.Append("<Feature>");
                xml.Append(EscapeXML(feature));
                xml.Append("</Feature>");
            }	
            if (IsSetFirstIssueLeadTime()) {
                StringWithUnits  firstIssueLeadTime = this.FirstIssueLeadTime;
                xml.Append("<FirstIssueLeadTime Units=" + "\"" +  EscapeXML(firstIssueLeadTime.Units)  + "\"" +  ">");
                xml.Append(EscapeXML(firstIssueLeadTime.Value));
                xml.Append("</FirstIssueLeadTime>");
            } 
            if (IsSetFloppyDiskDriveDescription()) {
                xml.Append("<FloppyDiskDriveDescription>");
                xml.Append(EscapeXML(this.FloppyDiskDriveDescription));
                xml.Append("</FloppyDiskDriveDescription>");
            }
            List<String> formatList  =  this.Format;
            foreach (String format in formatList) { 
                xml.Append("<Format>");
                xml.Append(EscapeXML(format));
                xml.Append("</Format>");
            }	
            if (IsSetFixedShippingCharge()) {
                Price  fixedShippingCharge = this.FixedShippingCharge;
                xml.Append("<FixedShippingCharge>");
                xml.Append(fixedShippingCharge.ToXMLFragment());
                xml.Append("</FixedShippingCharge>");
            } 
            if (IsSetGemType()) {
                xml.Append("<GemType>");
                xml.Append(EscapeXML(this.GemType));
                xml.Append("</GemType>");
            }
            if (IsSetGraphicsCardInterface()) {
                xml.Append("<GraphicsCardInterface>");
                xml.Append(EscapeXML(this.GraphicsCardInterface));
                xml.Append("</GraphicsCardInterface>");
            }
            if (IsSetGraphicsDescription()) {
                xml.Append("<GraphicsDescription>");
                xml.Append(EscapeXML(this.GraphicsDescription));
                xml.Append("</GraphicsDescription>");
            }
            if (IsSetGraphicsMemorySize()) {
                DecimalWithUnits  graphicsMemorySize = this.GraphicsMemorySize;
                xml.Append("<GraphicsMemorySize Units=" + "\"" +  EscapeXML(graphicsMemorySize.Units)  + "\"" +  ">");
                xml.Append(graphicsMemorySize.Value);
                xml.Append("</GraphicsMemorySize>");
            } 
            if (IsSetGuitarAttribute()) {
                xml.Append("<GuitarAttribute>");
                xml.Append(EscapeXML(this.GuitarAttribute));
                xml.Append("</GuitarAttribute>");
            }
            if (IsSetGuitarBridgeSystem()) {
                xml.Append("<GuitarBridgeSystem>");
                xml.Append(EscapeXML(this.GuitarBridgeSystem));
                xml.Append("</GuitarBridgeSystem>");
            }
            if (IsSetGuitarPickThickness()) {
                xml.Append("<GuitarPickThickness>");
                xml.Append(EscapeXML(this.GuitarPickThickness));
                xml.Append("</GuitarPickThickness>");
            }
            if (IsSetGuitarPickupConfiguration()) {
                xml.Append("<GuitarPickupConfiguration>");
                xml.Append(EscapeXML(this.GuitarPickupConfiguration));
                xml.Append("</GuitarPickupConfiguration>");
            }
            if (IsSetHardDiskCount()) {
                xml.Append("<HardDiskCount>");
                xml.Append(this.HardDiskCount);
                xml.Append("</HardDiskCount>");
            }
            if (IsSetHardDiskSize()) {
                NonNegativeIntegerWithUnits  hardDiskSize = this.HardDiskSize;
                xml.Append("<HardDiskSize Units=" + "\"" +  EscapeXML(hardDiskSize.Units)  + "\"" +  ">");
                xml.Append(hardDiskSize.Value);
                xml.Append("</HardDiskSize>");
            } 
            if (IsSetHasAutoFocus()) {
                xml.Append("<HasAutoFocus>");
                xml.Append(this.HasAutoFocus);
                xml.Append("</HasAutoFocus>");
            }
            if (IsSetHasBurstMode()) {
                xml.Append("<HasBurstMode>");
                xml.Append(this.HasBurstMode);
                xml.Append("</HasBurstMode>");
            }
            if (IsSetHasInCameraEditing()) {
                xml.Append("<HasInCameraEditing>");
                xml.Append(this.HasInCameraEditing);
                xml.Append("</HasInCameraEditing>");
            }
            if (IsSetHasRedEyeReduction()) {
                xml.Append("<HasRedEyeReduction>");
                xml.Append(this.HasRedEyeReduction);
                xml.Append("</HasRedEyeReduction>");
            }
            if (IsSetHasSelfTimer()) {
                xml.Append("<HasSelfTimer>");
                xml.Append(this.HasSelfTimer);
                xml.Append("</HasSelfTimer>");
            }
            if (IsSetHasTripodMount()) {
                xml.Append("<HasTripodMount>");
                xml.Append(this.HasTripodMount);
                xml.Append("</HasTripodMount>");
            }
            if (IsSetHasVideoOut()) {
                xml.Append("<HasVideoOut>");
                xml.Append(this.HasVideoOut);
                xml.Append("</HasVideoOut>");
            }
            if (IsSetHasViewfinder()) {
                xml.Append("<HasViewfinder>");
                xml.Append(this.HasViewfinder);
                xml.Append("</HasViewfinder>");
            }
            if (IsSetHazardousMaterialType()) {
                xml.Append("<HazardousMaterialType>");
                xml.Append(EscapeXML(this.HazardousMaterialType));
                xml.Append("</HazardousMaterialType>");
            }
            if (IsSetHoursOfOperation()) {
                xml.Append("<HoursOfOperation>");
                xml.Append(EscapeXML(this.HoursOfOperation));
                xml.Append("</HoursOfOperation>");
            }
            if (IsSetIncludedSoftware()) {
                xml.Append("<IncludedSoftware>");
                xml.Append(EscapeXML(this.IncludedSoftware));
                xml.Append("</IncludedSoftware>");
            }
            if (IsSetIncludesMp3Player()) {
                xml.Append("<IncludesMp3Player>");
                xml.Append(this.IncludesMp3Player);
                xml.Append("</IncludesMp3Player>");
            }
            if (IsSetIndications()) {
                xml.Append("<Indications>");
                xml.Append(EscapeXML(this.Indications));
                xml.Append("</Indications>");
            }
            if (IsSetIngredients()) {
                xml.Append("<Ingredients>");
                xml.Append(EscapeXML(this.Ingredients));
                xml.Append("</Ingredients>");
            }
            if (IsSetInstrumentKey()) {
                xml.Append("<InstrumentKey>");
                xml.Append(EscapeXML(this.InstrumentKey));
                xml.Append("</InstrumentKey>");
            }
            if (IsSetIsAutographed()) {
                xml.Append("<IsAutographed>");
                xml.Append(this.IsAutographed);
                xml.Append("</IsAutographed>");
            }
            if (IsSetISBN()) {
                xml.Append("<ISBN>");
                xml.Append(EscapeXML(this.ISBN));
                xml.Append("</ISBN>");
            }
            if (IsSetIsFragile()) {
                xml.Append("<IsFragile>");
                xml.Append(this.IsFragile);
                xml.Append("</IsFragile>");
            }
            if (IsSetIsLabCreated()) {
                xml.Append("<IsLabCreated>");
                xml.Append(this.IsLabCreated);
                xml.Append("</IsLabCreated>");
            }
            if (IsSetIsMemorabilia()) {
                xml.Append("<IsMemorabilia>");
                xml.Append(this.IsMemorabilia);
                xml.Append("</IsMemorabilia>");
            }
            if (IsSetISOEquivalent()) {
                NonNegativeIntegerWithUnits  ISOEquivalent = this.ISOEquivalent;
                xml.Append("<ISOEquivalent Units=" + "\"" +  EscapeXML(ISOEquivalent.Units)  + "\"" +  ">");
                xml.Append(ISOEquivalent.Value);
                xml.Append("</ISOEquivalent>");
            } 
            if (IsSetIssuesPerYear()) {
                xml.Append("<IssuesPerYear>");
                xml.Append(EscapeXML(this.IssuesPerYear));
                xml.Append("</IssuesPerYear>");
            }
            if (IsSetItemDimensions()) {
                ItemDimensions  itemDimensions = this.ItemDimensions;
                xml.Append("<ItemDimensions>");
                xml.Append(itemDimensions.ToXMLFragment());
                xml.Append("</ItemDimensions>");
            } 
            if (IsSetKeyboardDescription()) {
                xml.Append("<KeyboardDescription>");
                xml.Append(EscapeXML(this.KeyboardDescription));
                xml.Append("</KeyboardDescription>");
            }
            if (IsSetLabel()) {
                xml.Append("<Label>");
                xml.Append(EscapeXML(this.Label));
                xml.Append("</Label>");
            }
            if (IsSetLanguages()) {
                Languages  languages = this.Languages;
                xml.Append("<Languages>");
                xml.Append(languages.ToXMLFragment());
                xml.Append("</Languages>");
            } 
            if (IsSetLegalDisclaimer()) {
                xml.Append("<LegalDisclaimer>");
                xml.Append(EscapeXML(this.LegalDisclaimer));
                xml.Append("</LegalDisclaimer>");
            }
            if (IsSetLineVoltage()) {
                xml.Append("<LineVoltage>");
                xml.Append(EscapeXML(this.LineVoltage));
                xml.Append("</LineVoltage>");
            }
            if (IsSetListPrice()) {
                Price  listPrice = this.ListPrice;
                xml.Append("<ListPrice>");
                xml.Append(listPrice.ToXMLFragment());
                xml.Append("</ListPrice>");
            } 
            if (IsSetMacroFocusRange()) {
                xml.Append("<MacroFocusRange>");
                xml.Append(EscapeXML(this.MacroFocusRange));
                xml.Append("</MacroFocusRange>");
            }
            if (IsSetMagazineType()) {
                xml.Append("<MagazineType>");
                xml.Append(EscapeXML(this.MagazineType));
                xml.Append("</MagazineType>");
            }
            if (IsSetMalletHardness()) {
                xml.Append("<MalletHardness>");
                xml.Append(EscapeXML(this.MalletHardness));
                xml.Append("</MalletHardness>");
            }
            if (IsSetManufacturer()) {
                xml.Append("<Manufacturer>");
                xml.Append(EscapeXML(this.Manufacturer));
                xml.Append("</Manufacturer>");
            }
            if (IsSetManufacturerLaborWarrantyDescription()) {
                xml.Append("<ManufacturerLaborWarrantyDescription>");
                xml.Append(EscapeXML(this.ManufacturerLaborWarrantyDescription));
                xml.Append("</ManufacturerLaborWarrantyDescription>");
            }
            if (IsSetManufacturerMaximumAge()) {
                DecimalWithUnits  manufacturerMaximumAge = this.ManufacturerMaximumAge;
                xml.Append("<ManufacturerMaximumAge Units=" + "\"" +  EscapeXML(manufacturerMaximumAge.Units)  + "\"" +  ">");
                xml.Append(manufacturerMaximumAge.Value);
                xml.Append("</ManufacturerMaximumAge>");
            } 
            if (IsSetManufacturerMinimumAge()) {
                DecimalWithUnits  manufacturerMinimumAge = this.ManufacturerMinimumAge;
                xml.Append("<ManufacturerMinimumAge Units=" + "\"" +  EscapeXML(manufacturerMinimumAge.Units)  + "\"" +  ">");
                xml.Append(manufacturerMinimumAge.Value);
                xml.Append("</ManufacturerMinimumAge>");
            } 
            if (IsSetManufacturerPartsWarrantyDescription()) {
                xml.Append("<ManufacturerPartsWarrantyDescription>");
                xml.Append(EscapeXML(this.ManufacturerPartsWarrantyDescription));
                xml.Append("</ManufacturerPartsWarrantyDescription>");
            }
            if (IsSetMaterialType()) {
                xml.Append("<MaterialType>");
                xml.Append(EscapeXML(this.MaterialType));
                xml.Append("</MaterialType>");
            }
            if (IsSetMaximumAperture()) {
                DecimalWithUnits  maximumAperture = this.MaximumAperture;
                xml.Append("<MaximumAperture Units=" + "\"" +  EscapeXML(maximumAperture.Units)  + "\"" +  ">");
                xml.Append(maximumAperture.Value);
                xml.Append("</MaximumAperture>");
            } 
            if (IsSetMaximumColorDepth()) {
                xml.Append("<MaximumColorDepth>");
                xml.Append(EscapeXML(this.MaximumColorDepth));
                xml.Append("</MaximumColorDepth>");
            }
            if (IsSetMaximumFocalLength()) {
                DecimalWithUnits  maximumFocalLength = this.MaximumFocalLength;
                xml.Append("<MaximumFocalLength Units=" + "\"" +  EscapeXML(maximumFocalLength.Units)  + "\"" +  ">");
                xml.Append(maximumFocalLength.Value);
                xml.Append("</MaximumFocalLength>");
            } 
            if (IsSetMaximumHighResolutionImages()) {
                NonNegativeIntegerWithUnits  maximumHighResolutionImages = this.MaximumHighResolutionImages;
                xml.Append("<MaximumHighResolutionImages Units=" + "\"" +  EscapeXML(maximumHighResolutionImages.Units)  + "\"" +  ">");
                xml.Append(maximumHighResolutionImages.Value);
                xml.Append("</MaximumHighResolutionImages>");
            } 
            if (IsSetMaximumHorizontalResolution()) {
                NonNegativeIntegerWithUnits  maximumHorizontalResolution = this.MaximumHorizontalResolution;
                xml.Append("<MaximumHorizontalResolution Units=" + "\"" +  EscapeXML(maximumHorizontalResolution.Units)  + "\"" +  ">");
                xml.Append(maximumHorizontalResolution.Value);
                xml.Append("</MaximumHorizontalResolution>");
            } 
            if (IsSetMaximumLowResolutionImages()) {
                xml.Append("<MaximumLowResolutionImages>");
                xml.Append(EscapeXML(this.MaximumLowResolutionImages));
                xml.Append("</MaximumLowResolutionImages>");
            }
            if (IsSetMaximumResolution()) {
                DecimalWithUnits  maximumResolution = this.MaximumResolution;
                xml.Append("<MaximumResolution Units=" + "\"" +  EscapeXML(maximumResolution.Units)  + "\"" +  ">");
                xml.Append(maximumResolution.Value);
                xml.Append("</MaximumResolution>");
            } 
            if (IsSetMaximumShutterSpeed()) {
                DecimalWithUnits  maximumShutterSpeed = this.MaximumShutterSpeed;
                xml.Append("<MaximumShutterSpeed Units=" + "\"" +  EscapeXML(maximumShutterSpeed.Units)  + "\"" +  ">");
                xml.Append(maximumShutterSpeed.Value);
                xml.Append("</MaximumShutterSpeed>");
            } 
            if (IsSetMaximumVerticalResolution()) {
                NonNegativeIntegerWithUnits  maximumVerticalResolution = this.MaximumVerticalResolution;
                xml.Append("<MaximumVerticalResolution Units=" + "\"" +  EscapeXML(maximumVerticalResolution.Units)  + "\"" +  ">");
                xml.Append(maximumVerticalResolution.Value);
                xml.Append("</MaximumVerticalResolution>");
            } 
            if (IsSetMaximumWeightRecommendation()) {
                DecimalWithUnits  maximumWeightRecommendation = this.MaximumWeightRecommendation;
                xml.Append("<MaximumWeightRecommendation Units=" + "\"" +  EscapeXML(maximumWeightRecommendation.Units)  + "\"" +  ">");
                xml.Append(maximumWeightRecommendation.Value);
                xml.Append("</MaximumWeightRecommendation>");
            } 
            if (IsSetMemorySlotsAvailable()) {
                xml.Append("<MemorySlotsAvailable>");
                xml.Append(this.MemorySlotsAvailable);
                xml.Append("</MemorySlotsAvailable>");
            }
            if (IsSetMetalStamp()) {
                xml.Append("<MetalStamp>");
                xml.Append(EscapeXML(this.MetalStamp));
                xml.Append("</MetalStamp>");
            }
            if (IsSetMetalType()) {
                xml.Append("<MetalType>");
                xml.Append(EscapeXML(this.MetalType));
                xml.Append("</MetalType>");
            }
            if (IsSetMiniMovieDescription()) {
                xml.Append("<MiniMovieDescription>");
                xml.Append(EscapeXML(this.MiniMovieDescription));
                xml.Append("</MiniMovieDescription>");
            }
            if (IsSetMinimumFocalLength()) {
                DecimalWithUnits  minimumFocalLength = this.MinimumFocalLength;
                xml.Append("<MinimumFocalLength Units=" + "\"" +  EscapeXML(minimumFocalLength.Units)  + "\"" +  ">");
                xml.Append(minimumFocalLength.Value);
                xml.Append("</MinimumFocalLength>");
            } 
            if (IsSetMinimumShutterSpeed()) {
                DecimalWithUnits  minimumShutterSpeed = this.MinimumShutterSpeed;
                xml.Append("<MinimumShutterSpeed Units=" + "\"" +  EscapeXML(minimumShutterSpeed.Units)  + "\"" +  ">");
                xml.Append(minimumShutterSpeed.Value);
                xml.Append("</MinimumShutterSpeed>");
            } 
            if (IsSetModel()) {
                xml.Append("<Model>");
                xml.Append(EscapeXML(this.Model));
                xml.Append("</Model>");
            }
            if (IsSetModelYear()) {
                xml.Append("<ModelYear>");
                xml.Append(this.ModelYear);
                xml.Append("</ModelYear>");
            }
            if (IsSetModemDescription()) {
                xml.Append("<ModemDescription>");
                xml.Append(EscapeXML(this.ModemDescription));
                xml.Append("</ModemDescription>");
            }
            if (IsSetMonitorSize()) {
                DecimalWithUnits  monitorSize = this.MonitorSize;
                xml.Append("<MonitorSize Units=" + "\"" +  EscapeXML(monitorSize.Units)  + "\"" +  ">");
                xml.Append(monitorSize.Value);
                xml.Append("</MonitorSize>");
            } 
            if (IsSetMonitorViewableDiagonalSize()) {
                DecimalWithUnits  monitorViewableDiagonalSize = this.MonitorViewableDiagonalSize;
                xml.Append("<MonitorViewableDiagonalSize Units=" + "\"" +  EscapeXML(monitorViewableDiagonalSize.Units)  + "\"" +  ">");
                xml.Append(monitorViewableDiagonalSize.Value);
                xml.Append("</MonitorViewableDiagonalSize>");
            } 
            if (IsSetMouseDescription()) {
                xml.Append("<MouseDescription>");
                xml.Append(EscapeXML(this.MouseDescription));
                xml.Append("</MouseDescription>");
            }
            if (IsSetMPN()) {
                xml.Append("<MPN>");
                xml.Append(EscapeXML(this.MPN));
                xml.Append("</MPN>");
            }
            if (IsSetMusicalStyle()) {
                xml.Append("<MusicalStyle>");
                xml.Append(EscapeXML(this.MusicalStyle));
                xml.Append("</MusicalStyle>");
            }
            if (IsSetNativeResolution()) {
                xml.Append("<NativeResolution>");
                xml.Append(EscapeXML(this.NativeResolution));
                xml.Append("</NativeResolution>");
            }
            if (IsSetNeighborhood()) {
                xml.Append("<Neighborhood>");
                xml.Append(EscapeXML(this.Neighborhood));
                xml.Append("</Neighborhood>");
            }
            if (IsSetNetworkInterfaceDescription()) {
                xml.Append("<NetworkInterfaceDescription>");
                xml.Append(EscapeXML(this.NetworkInterfaceDescription));
                xml.Append("</NetworkInterfaceDescription>");
            }
            if (IsSetNotebookDisplayTechnology()) {
                xml.Append("<NotebookDisplayTechnology>");
                xml.Append(EscapeXML(this.NotebookDisplayTechnology));
                xml.Append("</NotebookDisplayTechnology>");
            }
            if (IsSetNotebookPointingDeviceDescription()) {
                xml.Append("<NotebookPointingDeviceDescription>");
                xml.Append(EscapeXML(this.NotebookPointingDeviceDescription));
                xml.Append("</NotebookPointingDeviceDescription>");
            }
            if (IsSetNumberOfDiscs()) {
                xml.Append("<NumberOfDiscs>");
                xml.Append(this.NumberOfDiscs);
                xml.Append("</NumberOfDiscs>");
            }
            if (IsSetNumberOfIssues()) {
                xml.Append("<NumberOfIssues>");
                xml.Append(this.NumberOfIssues);
                xml.Append("</NumberOfIssues>");
            }
            if (IsSetNumberOfItems()) {
                xml.Append("<NumberOfItems>");
                xml.Append(this.NumberOfItems);
                xml.Append("</NumberOfItems>");
            }
            if (IsSetNumberOfKeys()) {
                xml.Append("<NumberOfKeys>");
                xml.Append(this.NumberOfKeys);
                xml.Append("</NumberOfKeys>");
            }
            if (IsSetNumberOfPages()) {
                xml.Append("<NumberOfPages>");
                xml.Append(this.NumberOfPages);
                xml.Append("</NumberOfPages>");
            }
            if (IsSetNumberOfPearls()) {
                xml.Append("<NumberOfPearls>");
                xml.Append(this.NumberOfPearls);
                xml.Append("</NumberOfPearls>");
            }
            if (IsSetNumberOfRapidFireShots()) {
                xml.Append("<NumberOfRapidFireShots>");
                xml.Append(this.NumberOfRapidFireShots);
                xml.Append("</NumberOfRapidFireShots>");
            }
            if (IsSetNumberOfStones()) {
                xml.Append("<NumberOfStones>");
                xml.Append(this.NumberOfStones);
                xml.Append("</NumberOfStones>");
            }
            if (IsSetNumberOfStrings()) {
                xml.Append("<NumberOfStrings>");
                xml.Append(this.NumberOfStrings);
                xml.Append("</NumberOfStrings>");
            }
            if (IsSetNumberOfTracks()) {
                xml.Append("<NumberOfTracks>");
                xml.Append(this.NumberOfTracks);
                xml.Append("</NumberOfTracks>");
            }
            if (IsSetOpticalZoom()) {
                DecimalWithUnits  opticalZoom = this.OpticalZoom;
                xml.Append("<OpticalZoom Units=" + "\"" +  EscapeXML(opticalZoom.Units)  + "\"" +  ">");
                xml.Append(opticalZoom.Value);
                xml.Append("</OpticalZoom>");
            } 
            if (IsSetOriginalReleaseDate()) {
                xml.Append("<OriginalReleaseDate>");
                xml.Append(EscapeXML(this.OriginalReleaseDate));
                xml.Append("</OriginalReleaseDate>");
            }
            if (IsSetOutputWattage()) {
                xml.Append("<OutputWattage>");
                xml.Append(this.OutputWattage);
                xml.Append("</OutputWattage>");
            }
            if (IsSetPackageDimensions()) {
                PackageDimensions  packageDimensions = this.PackageDimensions;
                xml.Append("<PackageDimensions>");
                xml.Append(packageDimensions.ToXMLFragment());
                xml.Append("</PackageDimensions>");
            } 
            if (IsSetPearlLustre()) {
                xml.Append("<PearlLustre>");
                xml.Append(EscapeXML(this.PearlLustre));
                xml.Append("</PearlLustre>");
            }
            if (IsSetPearlMinimumColor()) {
                xml.Append("<PearlMinimumColor>");
                xml.Append(EscapeXML(this.PearlMinimumColor));
                xml.Append("</PearlMinimumColor>");
            }
            if (IsSetPearlShape()) {
                xml.Append("<PearlShape>");
                xml.Append(EscapeXML(this.PearlShape));
                xml.Append("</PearlShape>");
            }
            if (IsSetPearlStringingMethod()) {
                xml.Append("<PearlStringingMethod>");
                xml.Append(EscapeXML(this.PearlStringingMethod));
                xml.Append("</PearlStringingMethod>");
            }
            if (IsSetPearlSurfaceBlemishes()) {
                xml.Append("<PearlSurfaceBlemishes>");
                xml.Append(EscapeXML(this.PearlSurfaceBlemishes));
                xml.Append("</PearlSurfaceBlemishes>");
            }
            if (IsSetPearlType()) {
                xml.Append("<PearlType>");
                xml.Append(EscapeXML(this.PearlType));
                xml.Append("</PearlType>");
            }
            if (IsSetPearlUniformity()) {
                xml.Append("<PearlUniformity>");
                xml.Append(EscapeXML(this.PearlUniformity));
                xml.Append("</PearlUniformity>");
            }
            if (IsSetPhoneNumber()) {
                xml.Append("<PhoneNumber>");
                xml.Append(EscapeXML(this.PhoneNumber));
                xml.Append("</PhoneNumber>");
            }
            List<String> photoFlashTypeList  =  this.PhotoFlashType;
            foreach (String photoFlashType in photoFlashTypeList) { 
                xml.Append("<PhotoFlashType>");
                xml.Append(EscapeXML(photoFlashType));
                xml.Append("</PhotoFlashType>");
            }	
            List<String> pictureFormatList  =  this.PictureFormat;
            foreach (String pictureFormat in pictureFormatList) { 
                xml.Append("<PictureFormat>");
                xml.Append(EscapeXML(pictureFormat));
                xml.Append("</PictureFormat>");
            }	
            List<String> platformList  =  this.Platform;
            foreach (String platform in platformList) { 
                xml.Append("<Platform>");
                xml.Append(EscapeXML(platform));
                xml.Append("</Platform>");
            }	
            if (IsSetPriceRating()) {
                xml.Append("<PriceRating>");
                xml.Append(this.PriceRating);
                xml.Append("</PriceRating>");
            }
            if (IsSetProcessorCount()) {
                xml.Append("<ProcessorCount>");
                xml.Append(this.ProcessorCount);
                xml.Append("</ProcessorCount>");
            }
            if (IsSetProductGroup()) {
                xml.Append("<ProductGroup>");
                xml.Append(EscapeXML(this.ProductGroup));
                xml.Append("</ProductGroup>");
            }
            if (IsSetPromotionalTag()) {
                xml.Append("<PromotionalTag>");
                xml.Append(EscapeXML(this.PromotionalTag));
                xml.Append("</PromotionalTag>");
            }
            if (IsSetPOBoxShippingExcluded()) {
                xml.Append("<POBoxShippingExcluded>");
                xml.Append(EscapeXML(this.POBoxShippingExcluded));
                xml.Append("</POBoxShippingExcluded>");
            }
            if (IsSetPublicationDate()) {
                xml.Append("<PublicationDate>");
                xml.Append(EscapeXML(this.PublicationDate));
                xml.Append("</PublicationDate>");
            }
            if (IsSetPublisher()) {
                xml.Append("<Publisher>");
                xml.Append(EscapeXML(this.Publisher));
                xml.Append("</Publisher>");
            }
            List<String> purchasingChannelList  =  this.PurchasingChannel;
            foreach (String purchasingChannel in purchasingChannelList) { 
                xml.Append("<PurchasingChannel>");
                xml.Append(EscapeXML(purchasingChannel));
                xml.Append("</PurchasingChannel>");
            }	
            if (IsSetReadingLevel()) {
                xml.Append("<ReadingLevel>");
                xml.Append(EscapeXML(this.ReadingLevel));
                xml.Append("</ReadingLevel>");
            }
            if (IsSetRecorderTrackCount()) {
                xml.Append("<RecorderTrackCount>");
                xml.Append(this.RecorderTrackCount);
                xml.Append("</RecorderTrackCount>");
            }
            if (IsSetRegionCode()) {
                xml.Append("<RegionCode>");
                xml.Append(EscapeXML(this.RegionCode));
                xml.Append("</RegionCode>");
            }
            if (IsSetRegionOfOrigin()) {
                xml.Append("<RegionOfOrigin>");
                xml.Append(EscapeXML(this.RegionOfOrigin));
                xml.Append("</RegionOfOrigin>");
            }
            if (IsSetReleaseDate()) {
                xml.Append("<ReleaseDate>");
                xml.Append(EscapeXML(this.ReleaseDate));
                xml.Append("</ReleaseDate>");
            }
            List<String> returnMethodList  =  this.ReturnMethod;
            foreach (String returnMethod in returnMethodList) { 
                xml.Append("<ReturnMethod>");
                xml.Append(EscapeXML(returnMethod));
                xml.Append("</ReturnMethod>");
            }	
            if (IsSetRemovableMemory()) {
                xml.Append("<RemovableMemory>");
                xml.Append(EscapeXML(this.RemovableMemory));
                xml.Append("</RemovableMemory>");
            }
            if (IsSetResolutionModes()) {
                xml.Append("<ResolutionModes>");
                xml.Append(EscapeXML(this.ResolutionModes));
                xml.Append("</ResolutionModes>");
            }
            if (IsSetReturnPolicy()) {
                xml.Append("<ReturnPolicy>");
                xml.Append(EscapeXML(this.ReturnPolicy));
                xml.Append("</ReturnPolicy>");
            }
            if (IsSetRingSize()) {
                xml.Append("<RingSize>");
                xml.Append(EscapeXML(this.RingSize));
                xml.Append("</RingSize>");
            }
            if (IsSetSafetyWarning()) {
                xml.Append("<SafetyWarning>");
                xml.Append(EscapeXML(this.SafetyWarning));
                xml.Append("</SafetyWarning>");
            }
            if (IsSetSalesRestriction()) {
                xml.Append("<SalesRestriction>");
                xml.Append(EscapeXML(this.SalesRestriction));
                xml.Append("</SalesRestriction>");
            }
            if (IsSetSecondaryCacheSize()) {
                NonNegativeIntegerWithUnits  secondaryCacheSize = this.SecondaryCacheSize;
                xml.Append("<SecondaryCacheSize Units=" + "\"" +  EscapeXML(secondaryCacheSize.Units)  + "\"" +  ">");
                xml.Append(secondaryCacheSize.Value);
                xml.Append("</SecondaryCacheSize>");
            } 
            if (IsSetSettingType()) {
                xml.Append("<SettingType>");
                xml.Append(EscapeXML(this.SettingType));
                xml.Append("</SettingType>");
            }
            if (IsSetSize()) {
                xml.Append("<Size>");
                xml.Append(EscapeXML(this.Size));
                xml.Append("</Size>");
            }
            if (IsSetSKU()) {
                xml.Append("<SKU>");
                xml.Append(EscapeXML(this.SKU));
                xml.Append("</SKU>");
            }
            if (IsSetSoldInStores()) {
                xml.Append("<SoldInStores>");
                xml.Append(EscapeXML(this.SoldInStores));
                xml.Append("</SoldInStores>");
            }
            if (IsSetSizePerPearl()) {
                xml.Append("<SizePerPearl>");
                xml.Append(EscapeXML(this.SizePerPearl));
                xml.Append("</SizePerPearl>");
            }
            if (IsSetSkillLevel()) {
                xml.Append("<SkillLevel>");
                xml.Append(EscapeXML(this.SkillLevel));
                xml.Append("</SkillLevel>");
            }
            if (IsSetSoundCardDescription()) {
                xml.Append("<SoundCardDescription>");
                xml.Append(EscapeXML(this.SoundCardDescription));
                xml.Append("</SoundCardDescription>");
            }
            if (IsSetSpeakerCount()) {
                xml.Append("<SpeakerCount>");
                xml.Append(this.SpeakerCount);
                xml.Append("</SpeakerCount>");
            }
            if (IsSetSpeakerDescription()) {
                xml.Append("<SpeakerDescription>");
                xml.Append(EscapeXML(this.SpeakerDescription));
                xml.Append("</SpeakerDescription>");
            }
            List<String> specialFeaturesList  =  this.SpecialFeatures;
            foreach (String specialFeatures in specialFeaturesList) { 
                xml.Append("<SpecialFeatures>");
                xml.Append(EscapeXML(specialFeatures));
                xml.Append("</SpecialFeatures>");
            }	
            if (IsSetStoneClarity()) {
                xml.Append("<StoneClarity>");
                xml.Append(EscapeXML(this.StoneClarity));
                xml.Append("</StoneClarity>");
            }
            if (IsSetStoneColor()) {
                xml.Append("<StoneColor>");
                xml.Append(EscapeXML(this.StoneColor));
                xml.Append("</StoneColor>");
            }
            if (IsSetStoneCut()) {
                xml.Append("<StoneCut>");
                xml.Append(EscapeXML(this.StoneCut));
                xml.Append("</StoneCut>");
            }
            if (IsSetStoneShape()) {
                xml.Append("<StoneShape>");
                xml.Append(EscapeXML(this.StoneShape));
                xml.Append("</StoneShape>");
            }
            if (IsSetStoneWeight()) {
                DecimalWithUnits  stoneWeight = this.StoneWeight;
                xml.Append("<StoneWeight Units=" + "\"" +  EscapeXML(stoneWeight.Units)  + "\"" +  ">");
                xml.Append(stoneWeight.Value);
                xml.Append("</StoneWeight>");
            } 
            if (IsSetStudio()) {
                xml.Append("<Studio>");
                xml.Append(EscapeXML(this.Studio));
                xml.Append("</Studio>");
            }
            if (IsSetSubscriptionLength()) {
                NonNegativeIntegerWithUnits  subscriptionLength = this.SubscriptionLength;
                xml.Append("<SubscriptionLength Units=" + "\"" +  EscapeXML(subscriptionLength.Units)  + "\"" +  ">");
                xml.Append(subscriptionLength.Value);
                xml.Append("</SubscriptionLength>");
            } 
            List<String> supportedImageTypeList  =  this.SupportedImageType;
            foreach (String supportedImageType in supportedImageTypeList) { 
                xml.Append("<SupportedImageType>");
                xml.Append(EscapeXML(supportedImageType));
                xml.Append("</SupportedImageType>");
            }	
            if (IsSetSystemBusSpeed()) {
                DecimalWithUnits  systemBusSpeed = this.SystemBusSpeed;
                xml.Append("<SystemBusSpeed Units=" + "\"" +  EscapeXML(systemBusSpeed.Units)  + "\"" +  ">");
                xml.Append(systemBusSpeed.Value);
                xml.Append("</SystemBusSpeed>");
            } 
            if (IsSetSystemMemorySizeMax()) {
                DecimalWithUnits  systemMemorySizeMax = this.SystemMemorySizeMax;
                xml.Append("<SystemMemorySizeMax Units=" + "\"" +  EscapeXML(systemMemorySizeMax.Units)  + "\"" +  ">");
                xml.Append(systemMemorySizeMax.Value);
                xml.Append("</SystemMemorySizeMax>");
            } 
            if (IsSetSystemMemorySize()) {
                DecimalWithUnits  systemMemorySize = this.SystemMemorySize;
                xml.Append("<SystemMemorySize Units=" + "\"" +  EscapeXML(systemMemorySize.Units)  + "\"" +  ">");
                xml.Append(systemMemorySize.Value);
                xml.Append("</SystemMemorySize>");
            } 
            if (IsSetSystemMemoryType()) {
                xml.Append("<SystemMemoryType>");
                xml.Append(EscapeXML(this.SystemMemoryType));
                xml.Append("</SystemMemoryType>");
            }
            if (IsSetTellingPageIndicator()) {
                xml.Append("<TellingPageIndicator>");
                xml.Append(EscapeXML(this.TellingPageIndicator));
                xml.Append("</TellingPageIndicator>");
            }
            if (IsSetTheatricalReleaseDate()) {
                xml.Append("<TheatricalReleaseDate>");
                xml.Append(EscapeXML(this.TheatricalReleaseDate));
                xml.Append("</TheatricalReleaseDate>");
            }
            if (IsSetTitle()) {
                xml.Append("<Title>");
                xml.Append(EscapeXML(this.Title));
                xml.Append("</Title>");
            }
            if (IsSetTotalDiamondWeight()) {
                DecimalWithUnits  totalDiamondWeight = this.TotalDiamondWeight;
                xml.Append("<TotalDiamondWeight Units=" + "\"" +  EscapeXML(totalDiamondWeight.Units)  + "\"" +  ">");
                xml.Append(totalDiamondWeight.Value);
                xml.Append("</TotalDiamondWeight>");
            } 
            if (IsSetTotalExternalBaysFree()) {
                xml.Append("<TotalExternalBaysFree>");
                xml.Append(this.TotalExternalBaysFree);
                xml.Append("</TotalExternalBaysFree>");
            }
            if (IsSetTotalFirewirePorts()) {
                xml.Append("<TotalFirewirePorts>");
                xml.Append(this.TotalFirewirePorts);
                xml.Append("</TotalFirewirePorts>");
            }
            if (IsSetTotalGemWeight()) {
                DecimalWithUnits  totalGemWeight = this.TotalGemWeight;
                xml.Append("<TotalGemWeight Units=" + "\"" +  EscapeXML(totalGemWeight.Units)  + "\"" +  ">");
                xml.Append(totalGemWeight.Value);
                xml.Append("</TotalGemWeight>");
            } 
            if (IsSetTotalInternalBaysFree()) {
                xml.Append("<TotalInternalBaysFree>");
                xml.Append(this.TotalInternalBaysFree);
                xml.Append("</TotalInternalBaysFree>");
            }
            if (IsSetTotalMetalWeight()) {
                DecimalWithUnits  totalMetalWeight = this.TotalMetalWeight;
                xml.Append("<TotalMetalWeight Units=" + "\"" +  EscapeXML(totalMetalWeight.Units)  + "\"" +  ">");
                xml.Append(totalMetalWeight.Value);
                xml.Append("</TotalMetalWeight>");
            } 
            if (IsSetTotalNTSCPALPorts()) {
                xml.Append("<TotalNTSCPALPorts>");
                xml.Append(this.TotalNTSCPALPorts);
                xml.Append("</TotalNTSCPALPorts>");
            }
            if (IsSetTotalParallelPorts()) {
                xml.Append("<TotalParallelPorts>");
                xml.Append(this.TotalParallelPorts);
                xml.Append("</TotalParallelPorts>");
            }
            if (IsSetTotalPCCardSlots()) {
                xml.Append("<TotalPCCardSlots>");
                xml.Append(this.TotalPCCardSlots);
                xml.Append("</TotalPCCardSlots>");
            }
            if (IsSetTotalPCISlotsFree()) {
                xml.Append("<TotalPCISlotsFree>");
                xml.Append(this.TotalPCISlotsFree);
                xml.Append("</TotalPCISlotsFree>");
            }
            if (IsSetTotalSerialPorts()) {
                xml.Append("<TotalSerialPorts>");
                xml.Append(this.TotalSerialPorts);
                xml.Append("</TotalSerialPorts>");
            }
            if (IsSetTotalSVideoOutPorts()) {
                xml.Append("<TotalSVideoOutPorts>");
                xml.Append(this.TotalSVideoOutPorts);
                xml.Append("</TotalSVideoOutPorts>");
            }
            if (IsSetTotalUSB2Ports()) {
                xml.Append("<TotalUSB2Ports>");
                xml.Append(this.TotalUSB2Ports);
                xml.Append("</TotalUSB2Ports>");
            }
            if (IsSetTotalUSBPorts()) {
                xml.Append("<TotalUSBPorts>");
                xml.Append(this.TotalUSBPorts);
                xml.Append("</TotalUSBPorts>");
            }
            if (IsSetTotalVGAOutPorts()) {
                xml.Append("<TotalVGAOutPorts>");
                xml.Append(this.TotalVGAOutPorts);
                xml.Append("</TotalVGAOutPorts>");
            }
            if (IsSetUPC()) {
                xml.Append("<UPC>");
                xml.Append(EscapeXML(this.UPC));
                xml.Append("</UPC>");
            }
            if (IsSetVariationDenomination()) {
                xml.Append("<VariationDenomination>");
                xml.Append(EscapeXML(this.VariationDenomination));
                xml.Append("</VariationDenomination>");
            }
            if (IsSetVariationDescription()) {
                xml.Append("<VariationDescription>");
                xml.Append(EscapeXML(this.VariationDescription));
                xml.Append("</VariationDescription>");
            }
            if (IsSetVendorRebate()) {
                VendorRebate  vendorRebate = this.VendorRebate;
                xml.Append("<VendorRebate>");
                xml.Append(vendorRebate.ToXMLFragment());
                xml.Append("</VendorRebate>");
            } 
            if (IsSetWarranty()) {
                xml.Append("<Warranty>");
                xml.Append(EscapeXML(this.Warranty));
                xml.Append("</Warranty>");
            }
            if (IsSetWatchMovementType()) {
                xml.Append("<WatchMovementType>");
                xml.Append(EscapeXML(this.WatchMovementType));
                xml.Append("</WatchMovementType>");
            }
            if (IsSetWebsiteBuyability()) {
                xml.Append("<WebsiteBuyability>");
                xml.Append(EscapeXML(this.WebsiteBuyability));
                xml.Append("</WebsiteBuyability>");
            }
            if (IsSetWaterResistanceDepth()) {
                DecimalWithUnits  waterResistanceDepth = this.WaterResistanceDepth;
                xml.Append("<WaterResistanceDepth Units=" + "\"" +  EscapeXML(waterResistanceDepth.Units)  + "\"" +  ">");
                xml.Append(waterResistanceDepth.Value);
                xml.Append("</WaterResistanceDepth>");
            } 
            if (IsSetWirelessMicrophoneFrequency()) {
                xml.Append("<WirelessMicrophoneFrequency>");
                xml.Append(this.WirelessMicrophoneFrequency);
                xml.Append("</WirelessMicrophoneFrequency>");
            }
            return xml.ToString();
        }

        /**
         * 
         * Escape XML special characters
         */
        private String EscapeXML(String str) {
            StringBuilder sb = new StringBuilder();
            foreach (Char c in str)
            {
                switch (c) {
                case '&':
                    sb.Append("&amp;");
                    break;
                case '<':
                    sb.Append("&lt;");
                    break;
                case '>':
                    sb.Append("&gt;");
                    break;
                case '\'':
                    sb.Append("&#039;");
                    break;
                case '"':
                    sb.Append("&quot;");
                    break;
                default:
                    sb.Append(c);
                    break;
                }
            }
            return sb.ToString();
        }




    }

}